1

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

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

        }
    });
4

2 回答 2

2

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

有很多关于使用 Shared Prefs 的例子,所以不要在这里写另一个例子,而是一个很好的例子

共享首选项示例

例子

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);
于 2013-02-23T16:34:04.663 回答
0

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

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

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

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

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

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

于 2013-10-16T16:25:03.593 回答