【问题标题】:Convert Switch state to Boolean将 Switch 状态转换为布尔值
【发布时间】:2015-06-08 09:28:20
【问题描述】:

我正在尝试获取开关(开/关)的值并将数据告诉另一个类。

我没有使用 switch 语句,我有一个物理开关,用户可以选中或取消选中。

我需要获取此开关的值才能在另一个类中使用数据。

这是我尝试使用的:

Switch vibeBlocker = (Switch) findViewById(R.id.hideVibeSwitch);

@Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    Boolean vibeHider = Boolean.valueOf(vibeBlocker);
}

我在Boolean vibeHider = Boolean.valueOf(vibeBlocker); 行收到一条错误消息。我不确定如何获取我的开关的值并将其转换为boolean。我知道我可以使用.toString(); 之类的方法,但是booleans 有类似的方法吗?

我需要在两个类之间传递 switch 的值,我认为这会起作用。如果有人知道这里的正确陈述或更好的方法,请告诉我。

谢谢!

内森

【问题讨论】:

  • 这样的方法应该很容易创建;但很难确切地说出我什至不知道 Switch 是什么。假设它具有关闭和开启两种状态。您可以创建一个带有开关并具有以下返回的函数:return switch.isOn();
  • 我实际上想通了,我做错了。我在声明开关,但实际上我应该只使用SharedPreferenceManager。一切都搞定了:)

标签: android-studio boolean toggleswitch


【解决方案1】:

我在声明 Switch 并通过 Id 找到它,这对我不起作用。相反,我不得不使用 SharedPreferenceManager 将 boolean 放入我的包中:

@Override
public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    vibeBlock = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);
    savedInstanceState.putBoolean("myBoolean", vibeBlock);
}

这样可以将boolean 放入捆绑包中。这是我在 MainActivity 中将其拉出的方法:

@Override
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    hideVibe = savedInstanceState.getBoolean("myBoolean");
}

我还添加了这个:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate();
    (Creation code)
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    hideVibe = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);

    if (hideVibe) {
        switchConv.setVisibility(View.GONE);
    } else if (!hideVibe) {
        switchConv.setVisibility(View.VISIBLE);
    }
}

还有这个:

@Override
protected void onResume() {
    super.onResume();
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    hideVibe = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);
    if (hideVibe) {
        switchConv.setVisibility(View.GONE);
    } else if (!hideVibe) {
        switchConv.setVisibility(View.VISIBLE);
    }
}

这就是诀窍:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 2012-02-25
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2017-03-07
    • 2019-06-11
    相关资源
    最近更新 更多