【问题标题】:Disable Button Permanently in android在android中永久禁用按钮
【发布时间】:2017-08-12 09:18:21
【问题描述】:

我的活动中有三个按钮,当我单击两个按钮中的任何一个时,这两个按钮都会被禁用,但是当我返回活动时,它们不会恢复以前的状态。我尝试使用共享首选项来实现这一点,但不能保持按钮状态。谁能告诉我我在共享偏好中犯的错误。 在这里我与您分享我的代码。

关于创建方法

spStateButton= getApplicationContext().getSharedPreferences("Button_State", 0);
    spEditor = spStateButton.edit();

活动中

public void setButtonState(boolean enabled) {
    spEditor.putBoolean("btn_state", enabled);
    spEditor.commit();
}

public boolean getButtonState(){
    return spStateButton.getBoolean("btn_state", true);
}

我的活动中的按钮位置

holder.btn_Fwd.setEnabled(getButtonState());
setButtonState(false);
holder.btn_Rec.setEnabled(getButtonState());
setButtonState(false);

【问题讨论】:

  • 使用 SharedPreference 来保存视图状态不是一个好习惯。

标签: android button sharedpreferences android-preferences


【解决方案1】:

您使用方法 setButtonState(boolean enabled) 将值保存到共享首选项,并且您始终使用参数为 false 调用该方法。因此,在共享偏好中,键“btn_state”的值始终为 false。

因此,如果您想在下次活动开始时启用按钮,请调用类似 setButtonState(true);

您还可以使用 Singleton 类跨应用保存状态值。如下创建类

public class SingleTon {

private static final SingleTon instance = new SingleTon();
private Boolean buttonState = true //initially visible

private SingleTon(){}

public static Boolean getButtonState(){
    return buttonState;
}

 public void setButtonState(Boolean buttonState){
    return instance;
    }

  public SingleTon getInstance(){
        return instance;
        }
    }

【讨论】:

  • 但我想在我的应用程序中禁用按钮
  • 由于共享偏好在整个应用程序中都可用,有什么问题?
  • 但我无法做到这一点。
  • 我自己不知道为什么当我退出并重新进入我的活动时按钮状态会发生变化。不过,我编码正确。
  • 那是因为你总是将按钮状态保存为 false - setButtonState(false)..这就是为什么你的按钮总是被禁用
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
相关资源
最近更新 更多