メイン フラグメントとリスト フラグメントの 2 つのフラグメントを含む ViewPager を持つアプリがあります。リスト内の何かが選択されると、アクティビティで処理されるイベントが発生します。アクティビティはメイン フラグメントに切り替わり、「setSelectedItem」メソッドを呼び出します。このメソッドでは、getView() を使用して特定のビューを見つけ、選択した項目に従ってテキストを変更します。
ほとんどの場合は機能しますが、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);
そして最後に、これは問題を引き起こす MainFragment の setSelectedItem メソッドの行です。
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
読んだことをいくつか試しましたが、問題はまだ不規則に発生します。