3

SOでこの問題に関連するすべての質問を見てきましたが、どれもうまくいきませんでした。PreferenceFragmentクラスの xml ファイルからロードされた設定を削除しようとしていますが、その設定は削除されません

ここに私のpref_screen.xmlファイル があります

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

    <PreferenceCategory>

    <! ------------ />

    <Preferencecategory>

    <PreferenceCategory
         android:key="device_section">

        <Preference 
            android:key="sound"
            android:icon="@drawable/ic_settings_icon"
            android:title="@string/sound">
        </Preference>

        <Preference
            android:key="storage_settings"
            android:title="@string/storage_settings"
            android:icon="@drawable/ic_settings_storage">
        <Preference>

    </PreferenceCategory>

    <PreferenceCategory>

    <! ------------------ />

    </PreferenceCategory>

</PreferenceScreen>

ここに私のPreferenceFragmentクラスがあります:

public static class PrefFragment extends PreferenceFragment {

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref_screen);

        final Preference storage = getPreferenceScreen().findPreference("storage_settings");

        if(storage != null){
            Log.d("SettingsActivity : ", "findPreference(storage_settings) not returning null.");
        }

        final PreferenceCategory device_prefCat = 
            (PreferenceCategory) getPreferenceScreen().findPreference("device_section");

        if(device_prefCat != null){
            Log.d("SettingsActivity : " , "findPreference(device_section) not returning null.");
        }


        if(device_prefCat.removePreference(storage)){
            Log.d("SettingsActivity : ", "device_prefCat() returns true.");
        }else{
            Log.d("SettingsActivity : ", "device_prefCat() returns false");
        }
    }

ログを確認しました。findPreference()戻りませんnullremovePreference()戻りfalseます。私が間違っていることを教えてください。

4

1 に答える 1