如果应用程序重新打开SharedPreferences而不保存布尔值

时间:2015-08-12 16:18:24

标签: android boolean sharedpreferences preferences

我的项目中有以下代码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}}

当我重新打开应用程序时,它仍然存在同样的问题

1 个答案:

答案 0 :(得分:0)

您正在检索f2的值,但看起来并不像是将它保存在任何地方。

preferences.getBoolean("f2", true);

如果f2不存在(即您从未将其保存在SharedPreference实例中),这将返回上次保存的truef2值 - 它不会在SharedPreferences实例中为您创建或保存任何值。

要保存该值,您需要创建一个SharedPreferences编辑器,设置要保存的值(或多个值)并提交它:

SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("f2", levelTwoUnlocked);
editor.commit();

现在,当您下次读取f2值时,它将具有您上次提交的任何值。