2016-11-17 105 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

相关问题