2013-11-22 69 views
10

我有一個擴展ListFragment,與此onViewCreated()ListFragment「內容視圖尚未創建」上旋轉

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

mListener.onFragmentAction調用的主要活動,以附加一些聽衆和發送適配器片段的Lis​​tView控件(logFrag是活動的參考MyListFragment

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

應用程序加載不錯,但配置變化(設備旋轉)我得到以下堆棧跟蹤後:

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) 

我不明白爲什麼ListView還沒有創建,因爲我在Fragment的onCreateView方法已經返回並且在onViewCreated()期間調用它。我找到了一兩個相關標題,但解決方案似乎並不適用於此。

回答

26

將代碼從onViewCreated移至onActivityCreated。通常,使用UI小部件的所有內容都應在onActivityCreated之內。

+0

謝謝。我閱讀了文檔,但顯然沒有提到。 –

+3

我得到錯誤調用UI相關的東西在onActivityCreated內:S – David

+0

你真棒帥哥 – ROR