将开关状态转换为布尔值
Convert Switch state to Boolean
我正在尝试获取开关 (on/off) 的值并将数据告诉另一个 class。
我没有使用 switch 语句,我有一个物理开关,用户可以选中或取消选中。
我需要获取此开关的值,以便在另一个 class 中使用数据。
这是我尝试使用的:
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();
之类的方法,但是 boolean
s 有类似的方法吗?
我需要在两个 class 之间传递开关的值,我认为这可行。如果有人知道这里的正确说法,或者更好的方法,请告诉我。
谢谢!
内森
我正在声明 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);
}
}
成功了:)
我正在尝试获取开关 (on/off) 的值并将数据告诉另一个 class。
我没有使用 switch 语句,我有一个物理开关,用户可以选中或取消选中。
我需要获取此开关的值,以便在另一个 class 中使用数据。
这是我尝试使用的:
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();
之类的方法,但是 boolean
s 有类似的方法吗?
我需要在两个 class 之间传递开关的值,我认为这可行。如果有人知道这里的正确说法,或者更好的方法,请告诉我。
谢谢!
内森
我正在声明 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);
}
}
成功了:)