Ich habe eine ViewPager
mit zwei Fragments
, die ich in onCreate
meiner FragmentActivity
instanziieren.Android - Viewpager und Fragmente, Methoden nicht funktioniert
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);
Meine zweite Fragment
hat eine Methode innerhalb dieses Ich rufe meine aktualisieren 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);}
}
}
Genannt aus meiner FragmentActivity
//Something
Frag_2 fr = (Frag_2) vPagerAdapter.getItem(1);
if (fr.getView() != null) {
fr.refreshList(data);
}
Es funktioniert gut, bis ich die Ausrichtung zu ändern des Bildschirms. Korrigieren Sie mich, wenn ich falsch liege, aber ich suchte Stunden und ich fand keine Lösung oder eine gute Erklärung, die FragmentActivity
wird nur einmal erstellt und die Fragments
sind daran angeschlossen, aber die Fragments
erstellen auf Konfigurationsänderungen neu. Nun, wenn die Ausrichtung ändert ich nicht die View
von onCreate
so, wenn ich versuche, die View
aus der Fragment
es Null zurückgibt und meine refreshList()
Methode wird nicht aufgerufen. Wie kann ich das beheben?
Niemand weiß, wie es zu tun? – DLock
Ich habe das gleiche Problem und habe keine Lösung gefunden. Ich fange an zu denken, dass es einen Fehler in 'FragmentManager' gibt oder etwas anderes, wenn man bedenkt, dass wir beide dies erleben. – adneal
Was ist mit Ihrem XML-Layout? Dies ist kein Problem für statische Fragmente, die im Layout der Aktivität deklariert sind, aber dies ist bei dynamischen Fragmenten nicht der Fall. – chip