Mam ViewPager
z dwoma Fragments
, które utworzę w onCreate
mojego FragmentActivity
.Android - Viewpager i fragmenty, metody nie działają
private List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,Frag_1.class.getName()));
fragments.add(Fragment.instantiate(this,Frag_2.class.getName()));
this.vPagerAdapter = new Adapt(super.getSupportFragmentManager(),fragments);
vPager = (ViewPager) super.findViewById(R.id.pager);
vPager.setAdapter(vPagerAdapter);
mój drugi Fragment
ma metodę wewnątrz tego wezwania I zaktualizować ListView
- refreshList()
:
public class Frag_2 extends Fragment {
private ListView list;
private ArrayList<data> data;
private boolean firstCreation=true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRetainInstance(false);
}
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout, container, false);
list = (ListView) view.findViewById(R.id.lst);
//this.setRetainInstance(true);
return view;
}
public void refreshList(ArrayList <data> data){
if(data!=null){
ArrayAdapter<data> adapter = new Item_data_adapter(getActivity(),data);
list.setAdapter(adapter);}
}
}
Called z mojego FragmentActivity
//Something
Frag_2 fr = (Frag_2) vPagerAdapter.getItem(1);
if (fr.getView() != null) {
fr.refreshList(data);
}
To działa dobrze, dopóki nie zmieni orientację ekranu. Popraw mnie, jeśli się mylę, ale szukałem godzin i nie znalazłem rozwiązania lub dobrego wyjaśnienia, FragmentActivity
jest tworzony tylko jeden raz i Fragments
są dołączone do niego, ale Fragments
odtworzyć na zmiany konfiguracji. Teraz, gdy zmiana orientacji nie dostaję View
od onCreate
, więc kiedy próbuję uzyskać View
z Fragment
zwraca ona null i moja metoda refreshList()
nie jest wywoływana. Jak mogę to naprawić?
Nikt nie wie jak to zrobić? – DLock
Mam ten sam problem i nie znalazłem rozwiązania. Zaczynam myśleć, że jest jakiś błąd w 'FragmentManager' lub coś innego, ponieważ oboje tego doświadczamy. – adneal
co z układem xml? nie jest to problemem dla statycznych fragmentów zadeklarowanych w układzie działania, ale tak nie jest w przypadku fragmentów dynamicznych. – chip