0

これは、このような単純な問題に対する非常に難しい挑戦のようです!

  • Androidアプリにアイコンを持つMenuItemがあります。
  • MenuItem のコンテナーはアクション バーです (appcompat バージョン)
  • ActionBarへの参照があります
  • ユーザーはアイコンを MenuItem に変更できます。
  • ブール値を使用して、アイコンの現在のステータスを追跡します (2 つのアイコンのうちの 1 つだけにすることができます)。
  • ビューが縦向きから横向き (またはその逆) に変更されると、それらのアクティビティは破棄され、すべての変数などが取り込まれます。

3 失敗したソリューション:

  1. 通常、Bundle を使用してこの問題を解決します。ただし、Bundle はプリミティブとパーセルブルのみを受け入れます。MenuItem をパーセルするにはどうすればよいですか (ある場合)。

  2. 別の方法は、新しいアクティビティで MenuItem を取得し、上記のブール値を使用してアイコンの値を決定することです。ただし、MenuItem を最初に押さずに取得する方法はないようです (つまり、this.getMenu())。

  3. もう 1 つの方法は、ブール値に応じて MenuItem を押すことをシミュレートすることです。ただし、MenuItem を押すことをシミュレートする方法はないようです (主に、MenuItem を取得する方法がないためです!)。

向きが変わったときに新しいアクティビティのアクション バーの MenuItem のロゴを変更するにはどうすればよいですか?

4

1 に答える 1

1

1、Activity onSaveInstanceState 時にブール値の状態を保存する

2、アクティビティが onCreate を再開したときにブール値を復元します。

3、メニュー作成時のアイコンを変更します。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        MenuItem item = menu.getItem(0);
        if(mIsTrue){
            item.setIcon(R.drawable.true_icon);
        }else{
            item.setIcon(R.drawable.false_icon);
        }

        return true;
    }
于 2013-07-30T01:23:52.697 に答える