1

ActionbarCompat を実装する API 7+ のアプリケーションに取り組んでいます。

現在、ActionBar に「お気に入り」アイコンを含むアクティビティがあり、グラフィックをお気に入りと非お気に入りの間で切り替える方法を見つけようとしています。

onCreateOptionsMenu、onPrepareOptionsMenu、および onOptionsItemSelected で遊んでいる私のすべての努力は失敗しました。アイコンは作成時にのみ変更でき、アクティビティが既に実行されている間は変更できないようです。

ActionBarCompat を使用してアクティビティが表示されている間に、これらの ActionBarCompat アイテム アイコンのいずれかを実行時に変更し、API 11+ のネイティブ ActionBars との互換性を維持する方法を見つけた人はいますか?

4

2 に答える 2

0

onCreateOptionsMenu()アイテムがお気に入りかどうかをチェックし、そのロジックに基づいてアイコンを変更する基本的なロジックを実装する必要があります。

メソッドでは、次のsetFavourite()ものが必要です。

setFavourite() {
    ....
    if (changedFavourite)
       invalidateOptionsMenu()

こちらのドキュメントを参照してください: http://developer.android.com/reference/android/app/Activity.html#invalidateOptionsMenu ()

これにより、ABS が強制的に再描画されます。

于 2012-07-11T16:01:41.583 に答える
0

@mobinvent のコメントに触発されて、以下は、ActionBarCompat を使用するハニカム以前のデバイスに、ハニカム以降の無効化オプションメニュー() に従ってオプションメニューのライフサイクルシーケンスを与えることを発見しました。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) invalidateOptionsMenu();
else {
    supportInvalidateOptionsMenu();
    openOptionsMenu();
    closeOptionsMenu();
}

オプションメニューを開いたり閉じたりするためのハックな要件に注意してください。私の特定のインスタンスでは、これを onActivityResult から呼び出しますが、この段階では、いメニューのちらつきが発生しているようには見えません。

以前の ActionBar OS / デバイスへのグッド ダンス!

于 2013-09-20T20:54:04.457 に答える