Привет В моем приложении я добавляю элемент меню на панели действий, называемый "добавить в избранное", отображаемый значком "Белая звезда". Когда пользователь нажимает на этот значок, этот значок исчезает, появляется другая видимость элемента желтой звезды. Это хорошо работает. Но проблема в том, что при переключении на другое действие или при перезагрузке приложения предыдущее событие было потеряно. Как я могу сохранить это через 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);
}
Надеюсь, это решит вашу проблему!
в вашей деятельности сначала определите boolean
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);
}
}
Надеюсь, это поможет вам:
@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();
}