gpt4 book ai didi

android - ListFragment onCreate()显示不正确,onResume()后显示正常

转载 作者:行者123 更新时间:2023-11-29 01:27:20 24 4
gpt4 key购买 nike

我的 Activity

@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();
}

我的列表 fragment

@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 调用,它会显示得很好。我该如何解决这个问题?

列表中的第一项始终正确显示,只有列表的其余部分有问题。

onCreate() 之后调试 getView() 时,它清楚地表明 TextView 和 ImageView 是由我在 getView 中想要的数据设置的() 方法,但它不显示,而不是显示我想要的数据,它显示 Object 的 toString() String 位于其中一个 TextView 的 Adapter 中,所有其他的都留空。

最佳答案

你在这里做的一些事情很可能是你问题的根源:

A) fragment 不会在您的 Activity 的 onCreate() 函数期间膨胀,因此您无法在那里访问它们。这里的最佳实践是在 fragment 自己的 onCreateView() 生命周期回调期间访问/操作 fragment View 。这是它们在屏幕上膨胀之前的点,所以是完美的点。您创建的 Activity 和 fragment 应该相对独立。 fragment 应该是可重复使用的。例如,如果您在 X 多个 Activity 中需要此 fragment ,您会怎么做?

B) 我对你的 getView() 很怀疑。 ListView 通常由您在 xml 中的 listview View 组、适配器(由 onCreateView() 实例化)、 ListView 将包含的对象模型集合定义,以及一个单独的 xml,其中包含定义列表中每个单元格的 View 。 getView() 通常是您在适配器 覆盖的函数(使用 View 持有者模式),您可以在其中访问和填充构成来自单独 xml 的单元格的 View .

也许您已正确设置它,但您提供给我们的内容读起来并不像它(绝对不应在 fragment 的 onCreate() 中设置适配器)。

Vogella has a nice tutorial在 ListView 上。祝你好运!

关于android - ListFragment onCreate()显示不正确,onResume()后显示正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com