Emre Aslan
Emre Aslan

Reputation: 113

How to change icons in ActionBar dynamically

I want to change the icon on the ActionBar dynamically,I have a exit menu.But It doesn't change my android phone in the 5 version

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.exit_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.exit_menu:
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

This is my exit menu xml.

 <menu xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:id="@+id/exit_menu"
                android:icon="@drawable/exit"
                android:title="Exit"
               />       
        </menu>

Upvotes: 0

Views: 2114

Answers (5)

Sepehr Nozaryian
Sepehr Nozaryian

Reputation: 370

Edit2: in onCreateOptionsMenu (Menu menu)

MenuItem menuItem=menu.findItem(R.id.exit_menu);
MenuItemCompat.getActionView(menuItem);
menuItem.setIcon(R.drawable.new_icon);

xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item
        android:id="@+id/exit_menu"
        android:title="@string/menu_string"
        android:icon="@drawable/exit"
        app:showAsAction="always"/>
</menu>

Upvotes: 1

Multidots Solutions
Multidots Solutions

Reputation: 591

Hello I just added one line to change icon in option menu. item.setIcon(getResources().getDrawable(R.drawable.ic_launcher));

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.exit_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.exit_menu:
                android.os.Process.killProcess(android.os.Process.myPid());
                //Add This line in your code
                item.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
                System.exit(1);
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

Upvotes: 0

JesperQv
JesperQv

Reputation: 290

If you use a Toolbar instead of the ActionBar you can customize it a lot more. For example you can use a custom xml layout file for your Toolbar, making it look just how you want it to.

Upvotes: 0

Nikhil Borad
Nikhil Borad

Reputation: 2085

 @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        settingsItem = menu.findItem(R.id.exit_menu);


        if (SOME CONDITION) {
            settingsItem.setIcon(getDrawable(R.drawable.ic_add_image));
        } else {
           settingsItem.setIcon(getDrawable(R.drawable.ic_add_image1));
        }
        settingsItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                //ONCLICK METHOD
                return false;
            }
        });
        return super.onPrepareOptionsMenu(menu);
    }

do not handle in onOptionsItemSelected() method.

Upvotes: 0

D.J
D.J

Reputation: 1559

In onCreateOptionsMenu method use

menu.getItem(0).setIcon(drawable);

Upvotes: 0

Related Questions