現在、アプリケーションのテーマサポートを実装しており、その一部でアクションバーアプリのアイコンを変更しています。ホロライトを選択したときに暗いアイコンを使用したい。アクションバーアプリのアイコンが設定されている部分を除いて、すべてがメソッドで実行されます。私が使用しようとしているコードは次のとおりです。
getActionBar();
ActionBar.setIcon(R.drawable.my_icon);
「ここで利用できるそのような参照はありません」は私が得ているエラーです。これはどのように正しく行う必要がありますか?
ところで私のminSdkVersion
は14
アクションバーのシャーロックのものはありません。
_getActionBar();
_
あなたはすぐそこにアクションバーを捨てています。 getActionBar()
はActionBar
のインスタンスを返します。このインスタンスは、setIcon()
を呼び出す必要があります。そのようです:
_ActionBar actionBar = getActionBar();
actionBar.setIcon(R.drawable.my_icon);
_
少し遅い答えですが、役に立つかもしれないと思いました。
アクティビティ内から: APIレベル14以上の場合:
getActionBar().setIcon(R.drawable.my_icon);
より低いAPIレベルの場合、ActionBarActivityを拡張してから、次のことを行う必要があります。
getSupportActionBar().setIcon(R.drawable.my_icon);
フラグメント内から: APIレベル14以上の場合:
getActivity().getActionBar().setIcon(R.drawable.my_icon);
より低いAPIレベルの場合、使用できます(アクティビティはActionBarActivityを拡張する必要があります):
((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon);
どちらの場合も、アイコンまたはロゴを設定する前に、setDisplayShowHomeEnabled(true)を呼び出す必要があります。
((ActionBarActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon);
setIcon
に電話するだけでは十分ではありませんでした。
その前に、表示をアクティビティロゴからアクティビティアイコンに切り替える必要がありました。
actionBar.setDisplayUseLogoEnabled(false);
アクティビティアイコンとロゴの違いについては、 Androidアイコンとロゴ を参照してください。
参照するドローアブルをdrawable/
の下のres/
フォルダーに追加する必要があります。
編集:あなたのAndroidインストールフォルダには、使用するストック画像がたくさんあります。おそらくそこにあります。
私はこれを自分の用途に使用しています、そしてそれは私のために働いています。これがすべての助けになることを願っています
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.icon);
既存の答えは非常に正しいです。ただし、別の方法もあります。最小限のアプローチは、getActionBar().setIcon(R.drawable.my_icon);
あなたの仕事をすぐに終わらせます。 :)
技術的な詳細:getActionBar()はデフォルトでオブジェクトを返すため、スコープ内のオブジェクトで明示的に受け取ることなく、オブジェクトを直接操作できます。
これを試して
setSupportActionBar(toolbar);
if (getSupportActionBar() != null)
getSupportActionBar().setIcon(R.drawable.your_icon);