0

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

我没有使用 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 的值,我认为这会起作用。如果有人知道这里的正确陈述或更好的方法,请告诉我。

谢谢!

弥敦道

4

1 回答 1

0

我正在声明 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);
    }
}

这就是诀窍:)

于 2015-06-08T01:28:20.760 回答