2013-02-28 2 views
5

を返します。私はViewPagerを移植するxmlレイアウトファイルを膨張させています。getViewメソッドは、()Iフラグメント内部<code>ViewPager</code>を移入その<code>AsyncTask</code>を(主<code>Activity</code>から実行)を有するbasicallヌル

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


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

は、ここで私がやっているものにシンプルな説明です:

  1. MainActivity Asynctaskは、データベースを移入し、フラグメントへのポインタを送信します。 SendToFragement(db)のようなもの。
  2. フラグメントメソッドReceiveFromActivity(db)は、dbポインタを受け取り、ViewPagerにデータを取り込みます。

TextViewsの作成、テキストの設定、およびTextViewsのViewpagerへの追加だけでうまくいきます。しかし、もちろん、私はそれをより良く見せたいので、XMLレイアウトを膨らませました。問題は、getView()NULLを返すので、xmlレイアウトの内容を変更できないため、getView().findViewById()は機能しません。

+1

ポストいくつかのコード.... – Shiv

+0

はどのようにいくつかのコードについては、私たちはあなたの問題がどこにあるかを指摘し、修正を提案することができます。 – tolgap

+0

'doInBackground()'メソッドからUIスレッドで作業を行うことはできません。 ['onProgressUpdate()'](http://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate%28Progress...%29)を使用して、UIで結果を表示します。 –

答えて

7

PagerAdapterの実装に応じて、フラグメントが表示されなくなると、リソースを解放するために、Viewが破棄される可能性があります。したがって、更新された情報でonCreateView()に再度作成されるため、Viewを更新する必要はありません。 getView()は、onCreateView()onDestroyView()の呼び出しの間にビューを返します。それ以外の場合は、Fragmentはまだメモリに存在しますが、Viewには添付されないため、getView()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. 
+0

それは変です。私はこれを試しました 'view fragmentView = getView(); if(fragmentView!= null){ImageView img =(ImageView)fragmentView.findViewById(R.id.imageView1); \t \t \t \t img.setImageResource(R.drawable.gasguy);} しかし、私はまだNULLポインタの免除を取得しています。 – user1923613

+0

フラグメントビューがnullの場合、ifステートメントは真です。代わりに '!='を試してください。 – DeeV

+0

申し訳ありません、私は '(fragmentView!= null)'を意味しました – user1923613

関連する問題