简体   繁体   English

如何通过共享首选项保存menuitem可见性状态?

[英]how to save menuitem visibility state through sharedpreferences?

Hi In my app I add a menuitem on the action bar called "add to favorite" shown by white star icon. 嗨,在我的应用程序中,我在操作栏上添加了一个菜单项,称为“添加到收藏夹”,该菜单项由白色星形图标显示。 When user click it this icon become disappear and other yellow star icon item visibility comes up...this works fine..but the problem is that when I switch to another activity or when I restart my app the previous event has been lost. 当用户单击它时,此图标消失,并且其他黄色星形图标项目可见性出现……这很好..但是问题是,当我切换到另一个活动或重新启动应用程序时,先前的事件已丢失。 How can I save this through sharedpreferences? 如何通过sharedpreferences保存它? ?.. Here my code. ?..这是我的代码。

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

I hope this will help you: 我希望这能帮到您:

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

i hope this will solve your problem! 我希望这能解决您的问题!

in your activity define boolean first 在您的活动中首先定义布尔值

public class Atherosclerosis extends Activity {

    boolean favClicked;

use this in your on create. 在创建时使用它。

setContentView(R.layout.activity_main);

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

and then 接着

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


   }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM