无法将标题视图添加到ListFragment

时间:2011-06-11 18:30:43

标签: android

以下是我将列表添加到列表fragmet中的代码:

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);         

}   

但是行.getListView()。addHeaderView(tv);给我错误

06-11 15:24:46.110:ERROR / AndroidRuntime(8532):引起:java.lang.IllegalStateException:尚未创建内容视图

程序崩溃了。

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

1 个答案:

答案 0 :(得分:9)

问题是您要过早添加标题视图。 您尝试查找尚未创建的视图时会导致该错误。

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

  1. onAttach(Activity)在片段与其活动相关联时调用。
  2. onCreate(Bundle)调用来进行片段的初始创建。
  3. onCreateView(LayoutInflater,ViewGroup,Bundle)创建并返回与片段关联的视图层次结构。
  4. onActivityCreated(Bundle)告诉片段它的活动已经完成了自己的Activity.onCreate。
  5. onStart()使片段对用户可见(基于其启动的包含活动)。
  6. onResume()使片段与用户交互(基于其包含的活动被恢复)。
  7. 正如您所看到的,您正在尝试在onAttach中使用视图,但在onCreateView之前视图不存在!尝试将代码移动到onActivityCreate,这是在视图全部存在之后发生的