2012-02-15 7 views
19

これは、データベースから断片上のリストビューに移入されていますAndroid - 「コンテンツビューはまだ作成されていません」と表示されるのはなぜですか?

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

      LinearLayout Layout5 = (LinearLayout) inflater.inflate(R.layout.tab_frag5_layout, container, false); 

      Cursor allBands; 
      MyDatabase db; 

      Context ctx = (Context)TabFragment5.this.getActivity(); 


      db = new MyDatabase(ctx); 
      allBands = db.getBands(); 


      ListAdapter adapter = new SimpleCursorAdapter (ctx, 
        R.layout.listelement, 
        allBands, 
        new String[] {"BandName"}, 
        new int[] {R.id.text15}); 

      getListView().setAdapter(adapter); 

      return Layout5; 

     } 

は、なぜこの私にlogcatで「まだ作成されていないコンテンツビュー」を与えていますか?近いプログラム力フラグメントが開く...

+0

最初のステートメントではありません.ContentView(..)? – kosa

+0

私はそうは思わない、私は断片で作業しています。 – tyb

答えて

54

アダプタとgetListviewをonActivityCreated(...)に移動して解決しました。

onCreateViewはレイアウトを拡張して返します。

+0

setAdapter()を呼び出すと、ListFragmentあなたのレイアウトに定義されたリストがあることを確認します。また、onCreateView()がフラグメントのビューを与えていないので、それは鶏と卵の問題です。 –

+0

setAdapter()とgetListView()の両方で確実にチェックしますか?私はgetListView()については確信していますが、setAdapter()については考えていません –

+3

なぜonViewCreatedではありませんか?それは最も直感的な選択肢のようです。 – sudocoder

2

onCreateView()はそのコンテナActivityFragmentのレイアウトを貢献する一方で、通常はActivityの内側に置く必要がありますFragmenthttp://developer.android.com/guide/topics/fundamentals/fragments.html

断片から引用

は、通常活動のユーザインターフェースの一部として使用さ はアクティビティに独自のレイアウトを寄与する。

ので、問題はおそらくあなたのコンテナActivityの代わりFragmentあなたにsetContentView()の欠落によって引き起こされることがあります。

+0

この質問にはfolloupを読んでください:http://stackoverflow.com/questions/9297151/android-why-is-this-happening-content-not-yet-created-error – tyb

1

私は同じ問題を抱えていましたが、インタフェースを介してバックグラウンドタスクから(見えない)フラグメントを呼び出すことができませんでした。そのため、不可視のフラグメントは利用できなかったビューを使用しようとしました...私は同じ解決策でそれを修正しました:インタフェース関数はフラグメントisVisible()をチェックします。 私に正しい方向を教えていただきありがとうございます。

public void updateListInterface(){ 
    if(this.isVisible()) { 
     this.initListAdapter(); 
     getLoaderManager().restartLoader(0, null, this); 
    } else { 
     Log.v(TAG, "view is not visible"); 
    } 
} 
関連する問題