RedChris
RedChris

Reputation: 523

Can I change the Icon on an Actionbar Item

I'm not trying to change the main Icon , just a menu item's icon.

The Icon is essentially displays whether I am recording at that moment. I change the icon when it's tapped using

item.setIcon(R.drawable.recordstart);

In this method.

public boolean onOptionsItemSelected(MenuItem item) {
    ...
    } else if (item.getItemId() == R.id.ab_menu_VRecord) {

        if(recording)
                    {
                       item.setIcon(R.drawable.recordstop);
                    }else{
                       item.setIcon(R.drawable.recordstart);
                    }

        }

        return true;
    } else {
        return super.onOptionsItemSelected(item);
    }
}

Anyone know how I can do this outside this method.

Upvotes: 2

Views: 2735

Answers (3)

RedChris
RedChris

Reputation: 523

Example:

class {

    public MenuItem example;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.actionbar, menu);       
        example = menu.findItem(R.id.ab_menu_exampleview);
        return true;
    }
}

Then throughout your class you can use

example.setIcon("Your Image");

Upvotes: 5

ant074
ant074

Reputation: 1

if(!item.isChecked()){
    item.setChecked(true);
    item.setIcon(R.drawable.icon1);
}else{
    item.setChecked(false);
    item.setIcon(R.drawable.icon2);
}

is this?

Upvotes: 0

Kaediil
Kaediil

Reputation: 5535

Not 100% sure where you are wanting to change the icon, but you can certainly cache or create a class member variable and point it at the the MenuItem in your Activity or Fragment for example. After they click it or you inflate it, assign it to the member variable and when you need to change it, you've got a reference or "cached" pointer to it to change the icon.

I think that is a UI change so you might have to be sure that you only call that on the UI thread.

Upvotes: 0

Related Questions