マルチフラグメントアクティビティでオプションメニューを使用します
-
27-10-2019 - |
質問
私は持っています FragmentActivity
ホストa FragmentStatePagerAdapter
. 。ページャーには、ユーザーがリスト内のアイテムをスワイプできるように、同じフラグメントの複数のインスタンスが含まれています。目に見えるアイテムでのみ動作するオプションメニューをユーザーに提供できるようにしたいと思います。
たとえば、フラグメント内の画像ビューに表示される画像のリストがあります。ユーザーが画像を壁紙として設定できるようにするオプションメニュー項目が必要です。
私がこれを試してみるとき、いつ onPrepareOptionsMenu
呼び出されると、コードは複数のフラグメント(通常は電流 +次のフラグメント)で呼び出されます。アイテムが選択されている場合も同じです。これにより、間違った画像が壁紙として設定されます。
オプションメニューが現在表示されているフラグメント以上のトリガーを防ぐにはどうすればよいですか?
解決
私の解決策は、を使用することでした setOnPageChangeListener
の方法 ViewPager
どちらを追跡するために Fragment
現在、インデックスはに表示されていました onPageSelected
折り返し電話。あなたはまだ自分で初期インデックスを取得する必要がありますが、私の場合、これは些細なことでした
他のヒント
アクティビティのONOPTIONSITEMSELECTEDでオプションメニューのコールバックをインターセプトし、正しいフラグメントからアイテムを明示的に呼び出し、それを処理したことを示すために真であることを返します。
トリックは、メニューを入力する前に、各フラグメントのセタソプション(true | false)を変更することです。これはすでに私を助けてくれました