2016-11-17 2 views
2

Я хочу переключить значок на панели действий при нажатии на него. Я сделал следующее внутри onOptionsItemSelected.Как переключить значки меню панели действий в android

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 

     case R.id.star_School: 
      if (isStarFilled) { 
       item.setIcon(R.mipmap.starfilled); 
       isStarFilled=true; 
      }else{ 
       item.setIcon(R.mipmap.star); 
       isStarFilled=false; 
      } 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Это не работает в моем case.This мое меню XML-файл

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/star_School" 
     android:icon="@mipmap/star" 
     android:title="Bookmark" 
     app:showAsAction="always" /> 
</menu> 

Это мой OnCreate метод

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_school_details); 
     Boolean isStarFilled=false; 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setTitle(getIntent().getExtras().getString("name")); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

    } 

не может разрешить символ isStarFilled? Может кто-нибудь, пожалуйста, помогите мне?

ответ

0

Держите ваши иконки в вытяжке и сравнить некоторые вещи, как этого

mRememberPwd.getDrawable().getConstantState().equals 
    (getResources().getDrawable(R.drawable.login_checked).getConstantState()) 

вы можете найти больше ответов here о том, как сравнить вытяжку

вы также можете попробовать использовать пометку

глобальных переменную

boolean isStarFilled=false; 


case R.id.star_School: 
      if (isStarFilled) { 
       item.setIcon(R.mipmap.starfilled); 
      isStarFilled=false; 
      }else{ 
      item.setIcon(R.mipmap.star); 
       isStarFilled=true; 
       } 
      return true; 
+0

переменная isStarfilled не подключена к anyw здесь. Как инициализировать isStarFilled? – seon

+0

сохранить его поверх метода oncreate – Redman

+0

Я отредактировал свой вопрос с последним кодом. Показывает ошибку внутри if (isStarFilled) не может разрешить символ isStarFilled – seon