在第一个活动中我有3个按钮第一个按钮转到主题列表,第二个按钮显示上次看到的活动 我将此用于上次看到的活动: 在每个项目的主题列表中保存共享首选项中的数字,以及当用户单击主题列表调用中最后看到的数字并显示上一个活动时 这段代码工作得很好但是当我转动手机或应用程序没有打开几分钟时,最后一次看到没有显示为什 请帮帮我
在主题列表类
中 shared = getSharedPreferences("count", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
public static int counter;
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (i == 0) {
Intent intent0 = new Intent(getApplicationContext(),Study.class);
startActivity(intent0);
counter=1;
SharedPreferences.Editor edit = shared.edit();
edit.putInt("count", counter);
edit.commit();
}
if (i == 1) {
counter=2;
SharedPreferences.Editor edit = shared.edit();
edit.putInt("count", counter);
edit.commit();
Intent intent1 = new Intent(getApplicationContext(),Mo.class);
startActivity(intent1);
}
if (i == 2) {
counter=3;
SharedPreferences.Editor edit = shared.edit();
edit.putInt("count", counter);
edit.commit();
Intent intent2 = new Intent(getApplicationContext(),Sa.class);
startActivity(intent2);
}
包含上次看到按钮的拳头活动:
case R.id.last_seen_btn:
if (SubjectActivity.counter==0){
Toast.makeText(getApplicationContext(), " nothing",
Toast.LENGTH_LONG).show();
}
if (SubjectActivity.counter==1){
Intent intent = new Intent(getApplicationContext(),Study.class);
startActivity(intent);
}
if (SubjectActivity.counter==2){
Intent intent = new Intent(getApplicationContext(),Mo.class);
startActivity(intent);
}
if (SubjectActivity.counter==3){
Intent intent = new Intent(getApplicationContext(),Sa.class);
startActivity(intent);
}
答案 0 :(得分:0)
您应始终使用&#34;应用程序首选项&#34;最好是通过Application对象访问它们。在SharedPreferences上有缓存,并且它会在一段时间内创建一些问题。 在打开Activity之前总是更新SharedPreferences(如果i == 0)
public class MyApp extends Application {
private SharedPreferences mMyPref;
@Override
public void onCreate() {
super.onCreate();
mMyPref = getSharedPreferences("my_pref_name", MODE_PRIVATE);
}
public SharedPreferences getMySharedPreferences(){
return mMyPref;
}
}
在您想要读/写的代码部分中,只需使用
((MyApp)getApplicationContext()).getMySharedPreferences() ....
当然会创建一个局部变量,使您可以使用它。