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()
戻りませんnull
がremovePreference()
戻りfalse
ます。私が間違っていることを教えてください。