2011-06-11 58 views
4

这里是我添加列表到我的清单fragmet代码:广东话添加HeaderView到ListFragment

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):java.lang.IllegalStateException:致尚未创建

而且程序崩溃的内容视图。

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

回答

9

问题是,您正在快速添加标题视图。 错误是由于您尝试查找尚未创建的视图而引起的。

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

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

正如您所看到的,您尝试在onAttach中使用视图,但视图在onCreateView之前不存在!尝试移动你的代码到onActivityCreate,这已发生后的意见全部存在

+0

哇!谢谢,虽然我不得不改变其中的一行代码:\t \t // TextView tv =(TextView)getActivity()。findViewById(R.layout.file_row);到这一行 \t \t TextView tv = new TextView(getActivity());然后它感谢! – aarelovich 2011-06-11 19:25:24