【发布时间】:2016-05-11 06:56:11
【问题描述】:
实际上我有 3 个按钮。用户应该单击任何一个按钮,然后所有 3 个按钮应该在整个应用程序中永久禁用(当我们关闭和打开应用程序时,按钮应该处于禁用状态)。我该如何实现这一点?
提前致谢。
【问题讨论】:
-
使用 sharedPreference 保存状态
实际上我有 3 个按钮。用户应该单击任何一个按钮,然后所有 3 个按钮应该在整个应用程序中永久禁用(当我们关闭和打开应用程序时,按钮应该处于禁用状态)。我该如何实现这一点?
提前致谢。
【问题讨论】:
在 SharePreferences 中定义行为:
例如在onResume中使用这个:
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = pref.getBoolean("isEnabled",true);
myButton.setEnabled(enabled);
在按钮的onClick事件中这样做:
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
pref.edit().putBoolean("isEnabled",false).commit();
myButton.setEnabled(false);
【讨论】:
使用共享偏好来存储按钮的点击状态。并且每次在活动/片段中检查偏好值并根据偏好值禁用或启用。
【讨论】:
您需要将按钮状态保存在 sharedpreferences 中,并根据您的情况在活动代码中启用/禁用它。
if(stateofbuttonfromprefs) {
button.setEnabled(false);
} else {
button.setEnabled(true);
}
【讨论】:
您可以根据自己的目的使用 SharedPreference。更多信息请参考this
在 onCreate 方法之前声明 SharedPreference
SharedPreferences stateButton;
SharedPreferences.Editor bEditor;
在 onCreate() 上初始化它
stateButton= getApplicationContext().getSharedPreferences("Button_State", 0);
bEditor = stateButton.edit();
将这两种方法添加到您的活动中
public void setBState(boolean e) {
bEditor.putBoolean("btn_state", e);
bEditor.commit();
}
public boolean getButState(){
return stateButton.getBoolean("btn_state", true);
}
调用它以了解您的按钮状态调用
but.setEnabled(getBState());
当你需要禁用按钮时,使用
setBState(false);
【讨论】:
点击按钮
button_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();
prefs.edit().putBoolean("btn_click", true).commit();
}
});
在 Activity 的 OnCreate 方法中
Boolean btnClick= prefs.getBoolean("btn_click", false);
if(btnClick){
//Disable Button
}else{
//Enable Button
}
【讨论】: