嗨在我的应用程序中,我在操作栏上添加了一个名为“添加到收藏夹”的白色星形图标。当用户点击它时,此图标将消失,其他黄色星形图标项可见性出现...这很好..但问题是,当我切换到另一个活动或当我重新启动我的应用程序时,前一个事件已丢失。如何通过共享偏好保存? ?.. 这是我的代码。
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);
}
答案 0 :(得分: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();
}
答案 1 :(得分:0)
我希望这能解决你的问题!
在你的活动中定义boolean first
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);
}
}