2016-10-18 2 views
0

Я хочу изменить значок на ActionBar динамически, у меня есть выход menu.But Это не меняет свой телефон Android в 5 версииКак изменить иконки в ActionBar динамически

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); 
     } 
    } 

Этот это мое меню выхода 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> 

ответ

1

EDIT2: в onCreateOptionsMenu (меню Меню)

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> 
+0

Это не изменяется с вашим кодом. –

+0

@EmreAslan использовать мой отредактированный ответ – Sepehr

+0

Я пробовал, но он не работает. –

0

В способе использования onCreateOptionsMenu

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

К сожалению, это не изменяется. –

0
@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); 
    } 

не обрабатывается inOptionsItemВыбран() метод.

+0

Что такое НЕКОТОРЫЕ СОСТОЯНИЕ И УСТАНОВКИ? –

+0

first settingItem is MenuItem и второй (НЕКОТОРЫЙ СОСТОЯНИЕ) на базе этого, вы можете изменить значок своего меню. –

+0

не может разрешить символ. НЕКОТОРЫЕ и СОСТОЯНИЕ –

0

Если вы используете панель инструментов вместо ActionBar, вы можете настроить ее намного больше. Например, вы можете использовать собственный файл макета xml для панели инструментов, чтобы он выглядел так, как вы хотите.

0

Здравствуйте, я просто добавил одну строку для изменения значка в меню опций. 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); 
     } 
    } 
+0

Здравствуйте. Я пробовал, но это не работает. Мой API 24 –

+0

Привет @EmreAslan Я также пробовал в API 24. Он отлично работает. Возможно, у вас есть другие проблемы. Вы добавили приложение: showAsAction = "always" в свой файл меню? Кроме того, можете ли вы отправить скриншот своего макета? –

Смежные вопросы