Правильный способ и место для восстановления информации о пакете на фрагмент?
Я видел Bundle
s восстанавливается в некоторых методах обратного вызова Android, но во многих случаях существует ручное создание и настройка Bundle
как на сайте разработчиков, в данном случае из внешнего сообщения о Fragment
создание:
public static DetailsFragment newInstance(int index) {
DetailsFragment f = new DetailsFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
В этом другом вопросе, например, данные пакета восстанавливаются в onCreateView()
метод.
public class Frag2 extends Fragment {
public View onCreateView(LayoutInflater inflater,
ViewGroup containerObject,
Bundle savedInstanceState){
//here is your arguments
Bundle bundle=getArguments();
//here is your list array
String[] myStrings=bundle.getStringArray("elist");
}
}
Я немного смущен Bundle
Данные, предоставляемые каждым методом обратного вызова VS "другие пакеты":
Bundle bundle=getArguments();
и правильный способ и место для извлечения этих различных типов связанных данных.
Заранее спасибо!
1 ответ
Решение
Описанные выше два способа являются абсолютно правильным способом
- инициализировать новый экземпляр
Fragment
и передать начальные параметры. - получить начальные параметры в
Fragment
,
Другими словами, вы на правильном пути! Это должно работать, и вы должны быть довольны собой:)
РЕДАКТИРОВАТЬ:
Bundle
можно получить в любомonCreateView()
или жеonCreate()
, я бы предпочелonCreate()
, поскольку он представляет собой созданиеFragment
экземпляр и является правильным местом для инициализации.- Всегда есть один и только один
Bundle
экземпляр, полученный по вызовуgetArguments()
, и этоBundle
Экземпляр содержит все вашиint
s,String
с, что угодно.