1

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

2 回答 2

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


   }
于 2014-02-25T18:22:19.470 回答
0

我希望这能帮到您:

@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();
}
于 2014-02-23T19:34:36.317 回答