2013-11-22 3 views
10

Ich habe eine erweiterte ListFragment, mit diesem onViewCreated()ListFragment „content Ansicht noch nicht erstellt“ auf Rotate

public void onViewCreated(View v,Bundle savedInstanceState) { 
    super.onViewCreated(v, savedInstanceState); 
    mListener.onFragmentAction(0x000A); 
    if (mAdapter != null) { 
     getListView().setAdapter(mAdapter); 
    } 
} 

mListener.onFragmentAction die Haupttätigkeit nennt einige Zuhörer zu befestigen und den Adapter an das Fragment des Listview senden (logFrag ist der Verweis der Aktivität MyListFragment)

public void populateLogFrag() { 
//line 225 logFrag.getListView().setOnItemLongClickListener(myEventListener); 
      logFrag.getListView().setOnItemClickListener(myEventListener); 
      refreshLogAdapter(provideLogAdapter()); 
} 

die App lädt in Ordnung, aber nach Konfigurationsänderung (Gerätedrehung) bekomme ich folgende Stack-Trace:

012.351.
11-22 14:58:24.336: E/AndroidRuntime(22261): Caused by: java.lang.IllegalStateException: Content view not yet created 
11-22 14:58:24.336: E/AndroidRuntime(22261): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328) 
11-22 14:58:24.336: E/AndroidRuntime(22261): at android.support.v4.app.ListFragment.getListView(ListFragment.java:222) 
11-22 14:58:24.336: E/AndroidRuntime(22261): at com.berrmal.timetracker.MainActivity.populateLogFrag(MainActivity.java:225) 
11-22 14:58:24.336: E/AndroidRuntime(22261): at com.berrmal.timetracker.MainActivity.onFragmentAction(MainActivity.java:282) 
11-22 14:58:24.336: E/AndroidRuntime(22261): at com.berrmal.timetracker.MyListFragment.onViewCreated(MyListFragment.java:23) 

Ich kann nicht herausfinden, warum das ListView noch nicht erstellt wurde, da ich es aufrufen, nachdem die onCreateView-Methode des Fragments bereits zurückgegeben wurde, und während onViewCreated(). Ich habe ein oder zwei Themen mit verwandten Titeln gefunden, aber die Lösungen schienen hier nicht zu gelten.

Antwort

26

Verschieben Sie den Code von onViewCreated zu onActivityCreated. Im Allgemeinen sollte alles, das UI-Widgets verwendet, in onActivityCreated sein.

+0

Danke. Ich habe die Dokumentation durchgelesen, habe das aber offenbar nicht aufgegriffen. –

+3

Ich bekomme den Fehler Aufruf UI relevanten Sachen in onActivityCreated: S – David

+0

du bist super Kerl – ROR