如果应用程序重新打开 SharedPreferences 不保存布尔值
if application re-open SharedPreferences not saving boolean
我的项目中有以下代码 menu.class
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();
当我重新打开应用程序时,它仍然有同样的问题
您正在检索 f2
的值,但您似乎没有将其保存在任何地方。
preferences.getBoolean("f2", true);
如果 f2
不存在,这将 return f2
或 true
的最后保存值(即您从未将其保存在您的 SharedPreference 实例中) - 它不会为您在 SharedPreferences 实例中创建或保存任何值。
要保存该值,您需要创建一个 SharedPreferences 编辑器,设置要保存的一个(或多个)值并提交:
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("f2", levelTwoUnlocked);
editor.commit();
现在您下次读取 f2
值时,它将具有您上次提交的任何值。
我的项目中有以下代码 menu.class
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();
当我重新打开应用程序时,它仍然有同样的问题
您正在检索 f2
的值,但您似乎没有将其保存在任何地方。
preferences.getBoolean("f2", true);
如果 f2
不存在,这将 return f2
或 true
的最后保存值(即您从未将其保存在您的 SharedPreference 实例中) - 它不会为您在 SharedPreferences 实例中创建或保存任何值。
要保存该值,您需要创建一个 SharedPreferences 编辑器,设置要保存的一个(或多个)值并提交:
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("f2", levelTwoUnlocked);
editor.commit();
现在您下次读取 f2
值时,它将具有您上次提交的任何值。