2

これは特定の問題であることは認識していますが、互換性を扱っている他の人がこれに対処したに違いないと感じています。

ユーザーが ViewPager のさまざまなフラグメントをスワイプすると、actionBar メニュー項目も変更したいと思います。これが互換性アクションバーで簡単に実行できるかどうかはわかりません。指示や助けをいただければ幸いです。ActionBarHelper がこれを処理するため、setTitle() を介して単純にタイトルを変更していますが、メニュー項目を更新するためのものが見つかりません。私は次のことを試しましたが、失敗します..

public void setMenuDynamically(int resId){
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(resId, menu);
}

コードを見ると、SimpleMenu へのハンドルを取得し、項目を追加してそのアイコンを設定する簡単で明白な方法があるはずです。

事前に感謝します(Android開発者のGoogle +が示唆しているように、Googleの少年たちがこれを読んでいることを願っています)

4

1 に答える 1

1

わかりました、私が物事を説明するのが苦手な場合、またはこのトピックに関する知識があまりない場合はお知らせください. 最初の場合、本当に申し訳ありません。とにかく、これが機能するように見えましたが、これが正しい方法であるかどうかはわかりません。

AcitonBarHelper

    public void updateMenu(MenuItem item) {
}

ActionBarHelperBase (2.2 - 3.0 デバイス用)

@Override
public void updateMenu(MenuItem item){
    addActionItemCompatFromMenuItem(item);
}

ハニカムと ICS の同様のメソッドを作成します。

最後に、ページを変更するためのリスナーがあり、そのリスナーで呼び出します...

public void setMenuDynamically(int resId, String title){
    MenuItem item = menu.add(title);
    item.setIcon(resId);
    getActionBarHelper().updateMenu(item);
    MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}

MenuItemCompat が必要かどうかはわかりませんが、それでも含めました。少なくとも 2.2 ではすべてうまくいくようです。オーバーライドで変更を加える必要がある可能性が高いですが、ここから自分で処理できます。

于 2012-02-02T11:10:12.903 に答える