我想将一个布尔值保存到共享首选项。然后我将布尔值转换为字符串并填充textview。它可以正常使用此代码。但是,如果我从模拟器中删除应用程序,则布尔值将丢失。所以我想知道,如果我保存布尔值是正确的方法。
public class MainActivity extends Activity implements OnClickListener {
public TextView bool;
public boolean enabled;
public Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
boolean enabled = prefs.getBoolean("key", false);
TextView bool = (TextView) findViewById(R.id.bool);
String theValueAsString = new Boolean(enabled).toString();
bool.setText(theValueAsString);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
changeBoolean();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
boolean enabled = prefs.getBoolean("key", false);
TextView bool = (TextView) findViewById(R.id.bool);
String theValueAsString = new Boolean(enabled).toString();
bool.setText(theValueAsString);
}
public boolean changeBoolean(){
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
enabled = true;
prefs.edit().putBoolean("key",enabled).commit();
return enabled;
}
}
感谢您的帮助!
这是将布尔值保存到共享偏好的正确方法吗?
是否正确,如果我重新安装应用程序,我的数据会丢失?
我不知道这句话:
boolean enabled = prefs.getBoolean(" key",false);
为什么有假?当我保存到共享偏好时,它会自动更改吗?
答案 0 :(得分:1)
这是将布尔值保存到共享偏好的正确方法吗?
如果您希望changeBoolean()
始终保存值true
而不是"更改"价值。
是否正确,如果我重新安装应用程序,我的数据会丢失?
重新安装会保留您的应用数据。只有当您卸载或明确选择清除应用程序的数据时,共享首选项也会丢失。
我不知道这句话:
boolean enabled = prefs.getBoolean("key", false);
为什么有假?当我保存到共享偏好时,它会自动更改吗?
第二个参数是默认值。如果共享首选项中getBoolean()
没有保存值,则会"key"
返回。
答案 1 :(得分:0)
您可以使用以下代码设置布尔值
SharedPreferences.Editor editor = context.getSharedPreferences(you_pref_name, Context.MODE_PRIVATE).edit();
editor.putBoolean(YOUR_KEY, you_boolean_value);
editor.commit();
获取布尔值:
SharedPreferences preferences = context.getSharedPreferences(you_pref_name, Context.MODE_PRIVATE);
return preferences.getBoolean(YOUR_KEY, false);