我正在为Android编写应用程序,并且我在保存活动状态方面遇到困难。我使用sharedpreferences来保存imageview的可见性。我有一个名为“flag”的布尔值,它首先是错误的。当我点击按钮时,标志变为真。我保存了真实的陈述,并将其返回到onCreate方法中。第一次它工作正常,我的图像是可见的。 但下一次,当我关闭应用程序它再次隐形并且该标志是错误的。为什么?我希望标志保持真实,直到我删除应用程序。欢迎任何回应。我复制我的代码和LogCat。SharedPreferences保存问题
private static final String DB_INIT = "DB_INIT";
private static final String IMAGE = "IMAGE";
private boolean flag = false;
Button btn;
ImageView imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn);
imageview = (ImageView)findViewById(R.id.imageview);
SharedPreferences sp = getApplicationContext().getSharedPreferences(DB_INIT, Context.MODE_PRIVATE);
Boolean ize = sp.getBoolean(IMAGE, false);
Log.d("TEST6","CREATE flag "+flag);
Log.d("TEST6","CREATE ize "+ize);
if(ize){
imageview.setVisibility(View.VISIBLE);
}
else{
imageview.setVisibility(View.INVISIBLE);
}
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
flag = true;
imageview.setVisibility(View.VISIBLE);
Log.d("TEST6","CREATE flag " +flag);
}
});
}
@Override
protected void onStop() {
SharedPreferences sp = getApplicationContext().getSharedPreferences(DB_INIT,Context.MODE_PRIVATE);
SharedPreferences.Editor et = sp.edit();
et.putBoolean(IMAGE, flag);
Log.d("TEST6","STOP flag " +flag);
et.commit();
super.onStop();
} }
这里是我的logcat:
07-20 18:36:10.226:d/TEST6(5453):CREATE标志为假
07-20 18:36:10.234:d/TEST6(5453):CREATE IZE假
07-20 18:36:27.156:d/TEST6(5453):CREATE标志真正
07-20 18:36:39.390:d/TEST6(5453 ):STOP标志为真
07-20 18:36:43.507:d/TEST6(5453):CREATE标志为假
07-20 18:36:43.507:d/TEST6(5453):CREATE IZE真
07- 20 18:36:47.375:d/TEST6(5453):STOP标志为假
07-20 18:36:48.937:d/TEST6(5453):CREATE标志为假
07-20 18时36分:48.937:D/TEST6(5453):CREATE ize false
我不明白为什么在第二个STOP方法中是错误的。
GAH! 9秒! +1 – d0nut
@iismathwizard - 嘿。也给你+1。 –
你是对的!非常感谢您的快速帮助! –