4

FragmentActivityホストする がありますFragmentStatePagerAdapter。ユーザーがリスト内の項目間をスワイプできるように、ページャーには同じフラグメントの複数のインスタンスが含まれています。表示されているアイテムにのみ作用するオプション メニューをユーザーに提供できるようにしたいと考えています。

たとえば、フラグメント内のイメージビューに表示されるイメージのリストがあります。ユーザーが画像を壁紙として設定できるオプションメニュー項目が必要です。

これを試した瞬間、onPrepareOptionsMenuが呼び出されたときに、コードが複数のフラグメント (通常は現在のフラグメントと次のフラグメント) で呼び出されます。アイテム選択時も同様。これにより、間違った画像が壁紙として設定されます。

現在表示されているフラグメントを超えてオプション メニューがトリガーされないようにするにはどうすればよいですか?

4

3 に答える 3

3

私の解決策は、コールバックで現在どのインデックスが表示されているかを追跡するために、のsetOnPageChangeListenerメソッドを使用することでした。自分で初期インデックスを取得する必要がありますが、私の場合、これは簡単でしたViewPagerFragmentonPageSelected

于 2011-07-27T13:26:04.323 に答える
1

アクティビティのonOptionsItemSelectedでオプションメニューのコールバックをインターセプトし、そこにある正しいフラグメントからアイテムを明示的に呼び出して、処理したことを示すtrueを返すことができます。

于 2011-07-26T14:46:33.017 に答える
1

秘訣は、メニューにデータを入力する前に、各フラグメントで sethasoptions( true|false) を変更することです。これはすでに私を助けました

于 2013-05-10T05:54:27.227 に答える