2013-11-22 10 views
10

Ho un ListFragment estesa, con questo onViewCreated()ListFragment "vista contenuto non ancora creato" su Ruota

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

mListener.onFragmentAction chiama l'attività principale per fissare alcuni ascoltatori e inviare l'adattatore alla listView del frammento (logFrag è di riferimento la propria attività a MyListFragment)

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

I carichi app bene, ma dopo il cambio di configurazione (rotazione del dispositivo) ottengo il seguente 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) 

Non riesco a capire perché il ListView non è stato ancora creato, poiché lo chiamo dopo che il metodo onCreateView di Fragment è già stato restituito e durante onViewCreated(). Ho trovato una discussione o due con titoli correlati, ma le soluzioni non sembravano essere applicabili qui.

risposta

26

Spostare il codice onViewCreated-onActivityCreated. In generale, tutto ciò che utilizza i widget dell'interfaccia utente dovrebbe essere in onActivityCreated.

+0

Grazie. Ho letto la documentazione, ma a quanto pare non ho capito. –

+3

Sto ricevendo l'errore che chiama le cose dell'interfaccia utente all'interno di onActivityCreated: S – David

+0

sei fantastico amico – ROR