我已经在 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
。请告诉我我做错了什么。
最佳答案
基于我在 this thread 中发现的内容以下应该适合你:
Preference storage = findPreference("storage_settings");
PreferenceCategory device_prefCat = (PreferenceCategory) findPreference("device_section");
device_prefCat.removePreference(storage)
请注意,我不是在这里故意使用getPreferenceScreen()
。
关于android - PreferenceCategory.removePreference() 返回 false,因此不会删除首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31834416/