2011-06-11 10 views
4

にHeaderViewを追加します。カントは、ここで私は私のリストfragmetにリストを追加するコードです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(テレビ); 24:46.110:私は、エラー

06-11 15を与える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

うわー!!ありがとうございましたが、私はコード行の1つを変更しなければなりませんでしたが、\t \t // TextView tv =(TextView)getActivity()。findViewById(R.layout.file_row);この行へ \t \t TextView tv = new TextView(getActivity());それから、感謝しました! – aarelovich

関連する問題