【问题标题】:how to save menuitem visibility state through sharedpreferences?如何通过 sharedpreferences 保存 menuitem 可见性状态?
【发布时间】:2014-02-23 18:55:05
【问题描述】:

嗨,在我的应用程序中,我在操作栏上添加了一个名为“添加到收藏夹”的菜单项,由白色星形图标显示。当用户单击它时,此图标消失并且其他黄色星形图标项目可见性出现......这工作正常......但问题是当我切换到另一个活动或当我重新启动我的应用程序时,前一个事件已经丢失。如何通过 sharedpreferences 保存它? ?.. 这是我的代码。

On prepareoptionmenu (Menu menu){
If (ffavClicked){
menu.finditem (R.id.id_favorite).setvisible (false);
menu.finditem (R.id.id_favorite 2). setvisible (true);
}
else if (! favClicked){
menu.finditem ( R.id.id_favorite).setvisible (true);
menu.finditem (R.id.id_favorite 2).setvisible (false);
}
return ssuper . onprepareoptionmenu (menu);
}

【问题讨论】:

    标签: java android eclipse sharedpreferences menuitem-selection


    【解决方案1】:

    希望这能解决你的问题!

    在您的活动中首先定义布尔值

    public class Atherosclerosis extends Activity {
    
        boolean favClicked;
    

    在你的创建中使用它。

    setContentView(R.layout.activity_main);
    
            SharedPreferences myPrefs = PreferenceManager.getDefaultSharedPreferences(this);
            favClicked = myPrefs.getBoolean("menu_item", false);
    

    然后

     public boolean onOptionsItemSelected(MenuItem item) {
    
    
              SharedPreferences myPrefs = PreferenceManager.getDefaultSharedPreferences(this);
              final SharedPreferences.Editor editor = myPrefs.edit();
              favClicked = myPrefs.getBoolean("menu_item", false);
    
    
              switch (item.getItemId()) {
               case R.id.id_favorit:
                    favClicked=true;
                    editor.putBoolean("menu_item", favClicked);
                    editor.commit();
                    invalidateOptionsMenu();
                    return true;
    
                case R.id.id_favorit2:
    
                    favClicked=false;
                    editor.putBoolean("menu_item", favClicked);
                    editor.commit();
                    invalidateOptionsMenu();
                    return super.onOptionsItemSelected(item); 
                }
            return true;
            }
               @Override
                public boolean onPrepareOptionsMenu(Menu menu) {
    
    
             if(favClicked==true){
                   menu.findItem(R.id.id_favorit).setVisible(false);
                    menu.findItem(R.id.id_favorit2).setVisible(true);
    
             }else{
               menu.findItem(R.id.id_favorit).setVisible(true);
                menu.findItem(R.id.id_favorit2).setVisible(false);
    
         }
    
    
    
                    return super.onPrepareOptionsMenu(menu);
                }
    
    
       }
    

    【讨论】:

      【解决方案2】:

      希望对你有帮助:

      @Override
      public boolean onPrepareOptionsMenu(Menu menu) {
          SharedPreferences prefs = getSharedPreferences("YOURprefsName",
                  Context.MODE_PRIVATE);
      
          ffavClicked = prefs.getBoolean("favClicked", false);
      
          if (ffavClicked){
              menu.finditem (R.id.id_favorite).setvisible (false);
              menu.finditem (R.id.id_favorite 2). setvisible (true);
          } else if (!ffavClicked){
              menu.finditem ( R.id.id_favorite).setvisible (true);
              menu.finditem (R.id.id_favorite 2).setvisible (false);
          }
      
          return super.onPrepareOptionsMenu(menu);
      }
      
      @Override
      protected void onPause() {
          SharedPreferences prefs = getSharedPreferences("YOURprefsName",
                  Context.MODE_PRIVATE);
          prefs.edit().putBoolean("favClicked", ffavClicked).commit();
      
          super.onPause();
      }
      

      【讨论】:

      • Oppss 出了点问题......现在有了这个变化,其他项目没有出现,第一个项目也没有消失。 .我现在该怎么办?
      • 不工作请看看缺少什么..可见性选项不工作
      猜你喜欢
      • 2019-10-14
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      相关资源
      最近更新 更多