保存按钮的状态
问题描述:
任何人都知道如何保存按钮的状态?我想启用一个可以根据特定条件永久启用的按钮,即使用户退出应用程序,它也应该保持启用状态。我已经做了按钮的启用。现在我该如何保存它才能使其全部启用?保存按钮的状态
我将其设置为启用此方式。我在另一个类上使用putExtra来设置按钮启用。
Button page2 = (Button) findViewById(R.id.button2);
Intent intent2=getIntent();
String isEnabled2 = intent2.getStringExtra("isEnabled2");
if(isEnabled2==null||isEnabled2.equals("disabled")){
page2.setEnabled(false);
}
else{
page2.setEnabled(true);
}
page2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), p3.class);
startActivityForResult(myIntent, 0);
}
});
编辑
Button page2 = (Button) findViewById(R.id.button2);
Intent intent2=getIntent();
String isEnabled2 = intent2.getStringExtra("isEnabled2");
if(isEnabled2==null||isEnabled2.equals("disabled")){
page2.setEnabled(false);
}
else
{
page2.setEnabled(true);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(Enable.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("Name",true); //name is the key so may use a username or whatever you want
editor.commit();
}
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean btnEnabled = preferences.getBoolean("Name",false); //false because you probably want that as your default value
if(btnEnabled)
{
page2.setEnabled(true);
}
page2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), p3.class);
startActivityForResult(myIntent, 0);
}
});
答
可以保存Shared Preferences状态,然后检查对值,当用户打开应用程序。另一种选择是将其存储在SQLite DB中,前提是你需要为用户存储大量其他数据。
有很多关于使用Shared Prefs的例子,所以不用另外写一个例子, SO
例
if(isEnabled2==null||isEnabled2.equals("disabled")){
page2.setEnabled(false);
}
else{
page2.setEnabled(true);
//create an editor and put your value in there
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YourActivity.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("Name",true); //name is the key so may use a username or whatever you want
editor.commit();
}
然后,当你想取出这个值
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean btnEnabled = preferences.getBoolean("Name",false); //false because you probably want that as your default value
if(btnEnabled)
{
page2.setEnabled(true);
}
像这样的东西应该工作。我没有检查它,但它应该让你去
编辑
有它启用开始,在XML:
android:clickable="false"
或编程设置在onCreate()
检查共享首选项之前
page2.setEnabled(false);
答
保存视图和其他类型状态的更好方法是通过onSavedInstanceState(Bundle状态)方法并通过onRestoreInstanceState(Bundle状态)方法恢复它。这两个都需要被覆盖。
第一种方法是,你使用捆绑状态保存的状态:
state.putString("A KEY ID", "KEY Value");
这是如何保存的字符串一个例子。你可以保存许多不同的类型,比如布尔,捆绑,可序列化等等。只要看看'state.put'有什么可用的,它应该显示你可以使用的方法列表,这取决于你的IDE。
然后,您可以从第二个方法onRestoreInstanceState中恢复状态,您可以使用您保存的信息(例如,在视图上设置文本或显示用户保存的名称)执行所需操作。
如果你有任何问题,让我知道
打完线'page2.setEnabled(真)'我会放一个代码,将其保存从sharedpreference? – Jerome 2013-02-23 16:59:36
这就是我会做的。但你有几个选择。如果你只想保存,如果它尝试然后是的。如果你想保存任何一种方式,然后在该函数中创建一个标志,并在你的'if/else'中设置为true或false希望这是有道理的 – codeMagic 2013-02-23 17:44:03
我不明白我是一个Android的新手 – Jerome 2013-02-23 18:53:30