2012年10月31日水曜日

[Android]ViewPagerに追加したFragmentのインスタンスを取得する

調べたのでメモ。

と言ってもここに書いてある事をやっただけ。
Update data in ListFragment as part of ViewPager

ここの2番めのFragmentStatePagerAdapter#instantiateItemを使う方法でいけました。

最も投票されているViewPagerが自動的に設定する、Tagを使ってFragmentを取ってくる回答はFragmentPagerAdapterを使っている場合は使えるけど、FragmentStatePagerAdapterを使っている場合はダメみたいです。

まぁどのみちAPIが勝手に設定しているTagを利用するのはちょっと怖いですよね。いつ変わるか分からないし。

ちなみに任意のページのFragmentではなくて、現在表示しているページのFragmentを取得したいのであればこんなふうにすればいけました。


       ViewPager pager = (ViewPager) getActivity().findViewById(R.id.pager);
       FragmentStatePagerAdapter sAdapter = (FragmentStatePagerAdapter) pager.getAdapter();
       HistoryListFragment f2 =(HistoryListFragment) sAdapter.instantiateItem(pager, pager.getCurrentItem());
ViewPager#getCurrentItemで現在表示しているページのpositionを取得しただけですが。

0 件のコメント:

コメントを投稿