私は、メインフラグメントとリストフラグメントの2つのフラグメントを含むViewPagerを持つアプリケーションを持っています。リスト内の何かが選択されると、アクティビティで処理されるイベントが発生します。アクティビティはメインフラグメントに切り替わり、 "setSelectedItem"メソッドを呼び出します。このメソッドでは、 私は選択された項目に従ってテキストを変更する特定のビューを見つけるためにgetView()を使用します。フラグメント内のgetViewがnullを返す場合があります
ほとんどの場合、動作しますが、時にはgetViewがnullを返し、なぜそれがわかりません。
pagerAdapterが活動のOnCreateの中に作成されます。
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
ページャアダプタはそのコンストラクタで両断片のインスタンスを作成:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
とこれはと呼ばれる活動の方法であり、リストから項目が選択されたとき:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
最後にthであるという問題があったMainFragmentでsetSelectedItem方法で行です:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
私が読んいくつかのことを試してみましたが、問題はまだ不規則に発生します。
残念ながら私は同じ問題を抱えており解決はありません。私のコードはif(getView()== null)return;様々な場所で。あなたが今問題を解決していれば、私は興味を持っています。 – StackOverflowed
フラグメントマネージャーにフラグメントを追加するコードを共有できますか? onCreateView(フラグメントライフサイクルの一部)がフラグメントに対して呼び出されていない場合、つまりフラグメントがアクティビティに完全に追加されていない場合、getViewはnullを返す可能性があります。 – PacificSky
"TextView s"はどこで呼びますか?これは公開されていますか? –