2015-10-21 47 views
2

MyActivityListFragment不顯示正確的onCreate(),但的onResume之後是確定()

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //list is global var 
    list = (MyListFragment) getFragmentManager().findFragmentById(com.myapp.R.id.mainActivity_myListFragment); 
    //add all objects to list 
    list.getListView().invalidateViews(); 
} 

@Override 
protected void onResume(){ 
    super.onResume(); 
    list.getListView().invalidateViews(); 
} 

MyListFragment

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    MyAdapter adapter = new MyAdapter(new ArrayList()); 
    setListAdapter(adapter); 
} 

public View getView(int position, View convertView, ViewGroup container) { 
    View view = super.getView(position, convertView, container); 
    TextView main = (TextView) view.findViewById(mylibs.common.R.list_main); 
    TextView sub = (TextView) view.findViewById(mylibs.common.R.list_sub); 
    ImageView image = (ImageView) view.findViewById(mylibs.common.R.list_image); 

    //set the View content here. 
} 

的問題是,我不能讓第一次運行時能夠正確顯示。但是,如果onResume()由Android調用,則全部顯示完全正常。我該如何解決這個問題?

列表中的第一項始終顯示正確,只有列表的其餘部分有問題。

當調試getView()onCreate()後正確的,它清楚地表明,TextView的和ImageView的是由我想在getView()方法的數據集,但它不顯示和而不是顯示我想要的數據,它示出了toString()StringObject這是在Adapter爲其中一個TextView和所有其他都留空。

+0

你能提供'MyListFragment'的代碼嗎?你在哪裏加載片段?在XML? –

+0

是的,'MyListFragment'由XML加載。 – user3635998

+0

那麼'MyListFragment'的代碼如何? –

回答

-1

Android是一個殘骸,這是浪費時間。

我仍在尋找答案,但一個解決方法是創建一個新的線程,睡眠1ms,然後runonUIThread()invalidateViews()

+0

你能提供更多的代碼嗎? –

2

你在這裏做一些事情,最有可能你的問題的根源:

A)片段您活動的onCreate()函數過程中不膨脹,所以你不能有訪問它們。這裏的最佳做法是在Fragment自己的onCreateView()生命週期回調期間訪問/操作片段視圖。這是在它們膨脹到屏幕上之前的一點,所以是最佳選擇。您創建的活動和片段應相對獨立於彼此。碎片應該可以重複使用。例如,如果您需要在X多個活動中使用此片段,您會做什麼?您的getView()對我而言是可疑的。列表視圖通常由您在xml中具有的listview視圖組,適配器(由onCreateView()實例化),列表視圖將包含的對象的模型集合以及具有定義列表中的每個單元的視圖的單獨xml定義。 getView()通常是一個功能,您可以在範圍內覆蓋(使用視圖持有者模式),您可以在其中訪問並填充單獨xml中構成單元格的視圖。

也許你已經正確設置了它,但是你給我們的東西並不是這樣(適配器絕對不應該在片段的onCreate()中設置)。

Vogella has a nice tutorial列表視圖。祝你好運!

相關問題