gpt4 book ai didi

android - 无法将 HeaderView 添加到 ListFragment

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:46 25 4
gpt4 key购买 nike

这是我将列表添加到列表 fragment 的代码:

public void onAttach(Activity activity) {
super.onAttach(activity);
System.err.println("Fragment Attach");
String[] MyList = {"Item 1","Item 2","Item 3","Item 4","Item 5"};
System.err.println("File Row ID" + Integer.toString(R.layout.file_row));
ArrayAdapter<String> aa = new ArrayAdapter<String>(getActivity(), R.layout.file_row, MyList);

//Trying to add a Header View.
TextView tv = (TextView) activity.findViewById(R.layout.file_row);
tv.setText(R.string.FileBrowserHeader);
this.getListView().addHeaderView(tv);

//Setting the adapter
setListAdapter(aa);

}

但是这一行 this.getListView().addHeaderView(tv);给我错误

06-11 15:24:46.110: ERROR/AndroidRuntime(8532): Caused by: java.lang.IllegalStateException: Content view not yet created

然后程序崩溃了。

谁能告诉我我做错了什么?

最佳答案

问题是您添加标题 View 的时间过早。该错误是由于您试图查找尚未创建的 View 引起的。

fragment 的生命周期是(来源:http://developer.android.com/reference/android/app/Fragment.html)

  1. 一旦 fragment 与其 Activity 关联,就会调用 onAttach(Activity)。
  2. 调用 onCreate(Bundle) 来初始创建 fragment 。
  3. onCreateView(LayoutInflater, ViewGroup, Bundle) 创建并返回与 fragment 关联的 View 层次结构。
  4. onActivityCreated(Bundle) 告诉 fragment 它的 Activity 已经完成了它自己的 Activity.onCreate。
  5. onStart() 使 fragment 对用户可见(基于其包含的正在启动的 Activity )。
  6. onResume() 使 fragment 与用户交互(基于其包含的 Activity 正在恢复)。

如您所见,您正尝试在 onAttach 中使用 View ,但 View 直到 onCreateView 才存在!尝试将您的代码移动到 onActivityCreate,这是在所有 View 都存在之后发生的

关于android - 无法将 HeaderView 添加到 ListFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317767/

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