如何从PreferenceActivity中删除首选项?

use*_*701 12 android

我正在使用PreferenceActivity.如何删除首选项?我似乎无法让这个工作:

Preference p = findPreference("grok");
boolean worked = getPreferenceScreen().removePreference(p);
// worked == false.
Run Code Online (Sandbox Code Playgroud)

因此找到了首选项,但removePreference()调用失败.这样做的正确方法是什么?我正在使用一个preference.xml文件作为键,如下所示:

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:title="foo">

        <CheckBoxPreference
            android:key="grok" />

            ...
Run Code Online (Sandbox Code Playgroud)

谢谢

Att*_*one 27

您只能删除PreferenceGroup中的确切子项.所以在你的情况下,你应该为PreferenceCategory添加一些键(带有title ="foo"),然后使用这个键将findPreference添加,然后删除它

XML:

<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory
    android:key="category_foo"
    android:title="foo">

    <CheckBoxPreference
        android:key="grok" />

        ...
Run Code Online (Sandbox Code Playgroud)

码:

Preference p = findPreference("grok");
// removing Preference
((PreferenceGroup) findPreference("category_foo")).removePreference(p);
Run Code Online (Sandbox Code Playgroud)