2016-12-27 5 views
1

ツールバーからアイコンを取得して、bbddに表示される方法で取得した新しいアイコンに変更するにはどうすればよいですか? 問題は、アイコンを変更できるようにアクティビティを更新するイベントにアクセスできないことです。 onPrepareOptionsMenuメソッドを試しましたが、動作させることはできません。 メニューオブジェクトが空であるか無効であると私に通知するので、コードをonStartに置くことでこれを行うことができませんでした。アイコンをツールバーのAndroidに変更

public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    Drawable iconoMenu = obtenerIconoMenuCarro(); 
    getMenuInflater().inflate(R.menu.menu_categorias, menu); 
    menu.getItem(0).setIcon(iconoMenu); 
    return super.onPrepareOptionsMenu(menu); 

} 

    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_categorias, menu); 
    Drawable iconoMenu = obtenerIconoMenuCarro(); 
    menu.getItem(0).setIcon(iconoMenu); 
    return true; 
} 

私のアクティビティはAppCompactActivityによって拡張され、AdapterViewを介してロードされます。 そして、私はfragmentDialogに戻るとき、または次のアクティビティから問題が発生します。

ありがとうございました。

+1

[このポスト](http://stackoverflow.com/questions/19882443/how-to-change-menuitem-icon-in-actionbar-programatically)は、あなたがやりたいことには多くのオプションがあります。グローバルなブール値を設定することができます。また、 'invalidateOptionsMenu()'を呼び出すことでメニュー項目を更新する場合は、ブール値をtrueに変更します。その後、 'onPrepareOptionsMenu'でブール値が真であれば、メニューをクリアする必要なくアイコンを変更します。 – Fllo

+0

ありがとう、私は問題を勧誘する。 – ferdiado

+1

@ferdiadoええ、「懇願」って何? –

答えて

0

最も簡単な方法は、後で使用するためにMenuItemへの参照を保持することでした。

メニュー項目が膨らんでいるときに取得します。

MenuItem menuItem; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_menu, menu); 

     //find the menu item from the id 
     menuItem = menu.findItem(R.id.myMenuItem); 
     return true; 
    }

は、その後、あなたがミップマップのリソースまたは@drawableにする必要がイメージを変更します。

menuItem.setIcon(R.mipmap.ic_other_icon);
関連する問題