2015-10-21 48 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列表视图。祝你好运!

相关问题