保存按钮的状态

时间:2013-02-23 16:29:19

标签: android

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

我正在设置启用这种方式。我在另一个类上使用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);

        }
    });

2 个答案:

答案 0 :(得分:2)

您可以在Shared Preferences中保存状态,然后在用户打开应用时检查该值。如果您需要为用户存储大量其他数据,另一种选择是将其存储在SQLite DB

有很多关于使用共享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);

答案 1 :(得分:0)

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

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

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

这是关于如何保存字符串的一个示例。您可以保存许多不同类型,例如布尔值,捆绑包,可序列化等。只需查看使用'state.put'的可用内容,它应该显示您可以根据IDE使用的方法列表。

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

如果您有任何疑问,请告诉我