如何通过 sharedpreferences 保存 menuitem 可见性状态?
Posted
技术标签:
【中文标题】如何通过 sharedpreferences 保存 menuitem 可见性状态?【英文标题】:how to save menuitem visibility state through sharedpreferences? 【发布时间】: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);
【问题讨论】:
【参考方案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 出了点问题......现在有了这个变化,其他项目没有出现,第一个项目也没有消失。 .我现在该怎么办? 不工作请看看缺少什么..可见性选项不工作以上是关于如何通过 sharedpreferences 保存 menuitem 可见性状态?的主要内容,如果未能解决你的问题,请参考以下文章
将 ArrayList 保存到 SharedPreferences
手机日期更改时从 sharedpreference 中删除保存的数据
通过SharedPreferences实现简单的记住登录状态和保存密码
如何将整数保存到 SharedPreferences [重复]