2016-11-17 51 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文件

​​

這是我的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 here.How初始化isStarFilled? – seon

+0

保持在oncreate方法 – Redman

+0

我編輯了我的問題與最新code.Shows錯誤裏面,如果(isStarFilled)無法解析符號isStarFilled – seon

相關問題