保存按钮的状态

问题描述:

任何人都知道如何保存按钮的状态?我想启用一个可以根据特定条件永久启用的按钮,即使用户退出应用程序,它也应该保持启用状态。我已经做了按钮的启用。现在我该如何保存它才能使其全部启用?保存按钮的状态

我将其设置为启用此方式。我在另一个类上使用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

Shared Prefs Example

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); 
+0

打完线'page2.setEnabled(真)'我会放一个代码,将其保存从sharedpreference? – Jerome 2013-02-23 16:59:36

+0

这就是我会做的。但你有几个选择。如果你只想保存,如果它尝试然后是的。如果你想保存任何一种方式,然后在该函数中创建一个标志,并在你的'if/else'中设置为true或false希望这是有道理的 – codeMagic 2013-02-23 17:44:03

+0

我不明白我是一个Android的新手 – Jerome 2013-02-23 18:53:30

保存视图和其他类型状态的更好方法是通过onSavedInstanceState(Bundle状态)方法并通过onRestoreInstanceState(Bundle状态)方法恢复它。这两个都需要被覆盖。

第一种方法是,你使用捆绑状态保存的状态:

state.putString("A KEY ID", "KEY Value"); 

这是如何保存的字符串一个例子。你可以保存许多不同的类型,比如布尔,捆绑,可序列化等等。只要看看'state.put'有什么可用的,它应该显示你可以使用的方法列表,这取决于你的IDE。

然后,您可以从第二个方法onRestoreInstanceState中恢复状态,您可以使用您保存的信息(例如,在视图上设置文本或显示用户保存的名称)执行所需操作。

如果你有任何问题,让我知道