我的项目中有以下代码f1 =(Button)findViewById(R.id.f1);
f1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// TODO Auto-generated method stub
Intent intent = new Intent ();
intent.setClassName ("com.example.aplication", "com.example.application.levelone");
startActivityForResult (intent, 0);
}
});
}
public void onActivityResult (int requestCode, int resultCode, Intent intent) {
super.onActivityResult (requestCode, resultCode, intent);
f2=(Button)findViewById(R.id.f2);
f2lock=(ImageView)findViewById(R.id.f2lock);
switch (resultCode) {
case 11: f2.setVisibility(View.VISIBLE);
f2lock.setVisibility(View.GONE);
}
SharedPreferences preferences = getSharedPreferences("preferences", MODE_PRIVATE);
boolean levelTwoUnlocked = preferences.getBoolean("f2", true);
if(levelTwoUnlocked){
f2.setVisibility(View.VISIBLE);
f2lock.setVisibility(View.GONE);
}
else {
f2.setVisibility(View.GONE);
f2lock.setVisibility(View.VISIBLE);
}
f2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent intent = new Intent ();
intent.setClassName ("com.example.application", "com.example.application.leveltwo");
startActivityForResult (intent, 0);
}
});
}
f2
代码运行正常。 f2lock
按钮设置为可见,f2
不可见。
但是当我重新打开应用程序时, SharedPreferences preferences = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor ed = preferences.edit();
boolean levelTwoUnlocked = preferences.getBoolean("f2", true);
ed.commit();
按钮返回到可见状态。
我的偏好设置代码没有完成吗?
已更新
我已经改变了这样的首选项代码
{{1}}
当我重新打开应用程序时,它仍然存在同样的问题
答案 0 :(得分:0)
您正在检索f2
的值,但看起来并不像是将它保存在任何地方。
preferences.getBoolean("f2", true);
如果f2
不存在(即您从未将其保存在SharedPreference实例中),这将返回上次保存的true
或f2
值 - 它不会在SharedPreferences实例中为您创建或保存任何值。
要保存该值,您需要创建一个SharedPreferences编辑器,设置要保存的值(或多个值)并提交它:
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("f2", levelTwoUnlocked);
editor.commit();
现在,当您下次读取f2
值时,它将具有您上次提交的任何值。