Java 根据Android中另一个首选项的值删除首选项
我的问题是关于Android中的动态(共享)偏好。我找了很多,但找不到合适的解决办法 我有一个Java 根据Android中另一个首选项的值删除首选项,java,android,Java,Android,我的问题是关于Android中的动态(共享)偏好。我找了很多,但找不到合适的解决办法 我有一个SwitchPreference,它应该根据其值添加或删除EditTextPreference 因此,我有一个SettingsFragment.java类: XML布局文件如下所示: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk
SwitchPreference
,它应该根据其值添加或删除EditTextPreference
因此,我有一个SettingsFragment.java类:
XML布局文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/calc_base">
...
<SwitchPreference
android:key="industrial_tax"
android:title="@string/industrial_tax"
android:visibility="invisible"/>
<EditTextPreference
android:defaultValue="0"
android:dialogTitle="@string/residence"
android:inputType="number"
android:key="residence"
android:title="@string/residence" />
...
</PreferenceCategory>
</PreferenceScreen>
...
...
我尝试过调试,但它从未进入if子句,我也不知道为什么
SwitchPreference
不是二进制的吗?我是Android新手,尽量不给你们带来不必要的麻烦,但我真的走到了死胡同。findReference()
返回一个首选项
对象(或null
)
问题是您正在检查此首选项
对象与布尔值
值false之间的相等性。if
块将永远不会执行
SwitchPreference
具有isChecked()
方法(继承自TwoStatePreference
),您可能希望改用该方法:
// get ahold of the SwitchPreference instance
SwitchPreference pref = (SwitchPreference) findPreference("industrial_tax");
// if it's not checked, then remove the corresponding Preference
if (!pref.isChecked()) {
Log.v(TAG, "If-Schleife");
Preference residence = findPreference("residence");
getPreferenceScreen().removePreference(residence);
}
此外,如果您只想禁用首选项而不是删除它,那么使用该属性可能是一种更简单/更干净的方法:
<SwitchPreference
android:key="industrial_tax"
android:title="@string/industrial_tax"
android:visibility="invisible"/>
<EditTextPreference
android:defaultValue="0"
android:dependency="industrial_tax"
android:dialogTitle="@string/residence"
android:inputType="number"
android:key="residence"
android:title="@string/residence" />
<SwitchPreference
android:key="industrial_tax"
android:title="@string/industrial_tax"
android:visibility="invisible"/>
<EditTextPreference
android:defaultValue="0"
android:dependency="industrial_tax"
android:dialogTitle="@string/residence"
android:inputType="number"
android:key="residence"
android:title="@string/residence" />