6

基本的に、フラグメント内にデータを入力するAsyncTask( main から実行) があります。xml レイアウト ファイルを膨張させて、.ActivityViewPagerViewPager

問題は、実行時に変更できるように、レイアウト内のビュー (imageview、textview) へのポインターを取得できないことです。おそらく return が原因だと思いgetView()ますnullonCreateView()おそらくまだ呼び出されていないためだと読みました。これを解決するために私に何ができるか知っている人はいますか?


私のコードは今ちょっと混乱しています。

私がやっていることの簡単な説明は次のとおりです。

  1. MainActivity Asynctask はデータベースにデータを入力し、ポインターを Fragment に送信します。SendToFragement(db); のようなもの
  2. Fragment メソッド ReceiveFromActivity(db) は、db ポインターを受け取り、ViewPager にデータを設定します。

TextView を作成し、テキストを設定し、Viewpager に TextView を追加するだけであれば、問題なく動作します。しかし、もちろん、見栄えを良くしたいので、xml レイアウトを膨らませました。問題は、xml レイアウトの内容を変更できないことgetView()です。NULLgetView().findViewById()

4

1 に答える 1

7

PagerAdapter の実装によっては、表示されなくなった Fragment がViewリソースを解放するために破棄される可能性があります。View更新された情報で再度作成されるため、を更新する必要はありませんonCreateView()。 とgetView()の呼び出しの間にビューを返します。それ以外では、はまだメモリ内に存在できますが、どのにもアタッチされていないため、が返されます。onCreateView()onDestroyView()FragmentViewgetView()null

だから基本的に、

View fragmentView = getView();
if(fragmentView != null) {
  // we are in view or at least exist. Update the elements.
}
// Else don't worry about it. Just update the data.
于 2013-02-28T13:57:59.673 に答える