【发布时间】:2016-03-08 18:50:40
【问题描述】:
我想做一个普通的 PreferenceActivity(旧样式,没有标题),但是有片段并且不使用 addPreferencesFromResource(id)(因为弃用)。
现在我通过将它放在我的onCreate 中实现了这一点:
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
我的PreferencesFragment 看起来像这样:
public static class PreferencesFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
显然我也实现了isValidFragment方法:
@Override
protected boolean isValidFragment(String fragmentName) {
return PreferencesFragment.class.getName().equals(fragmentName)
|| InnerFragment.class.getName().equals(fragmentName);
}
而且它工作得很好。但是,在我的preferences.xml 中包含PreferenceScreen 时会出现问题:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ... -->
<PreferenceScreen android:fragment="net.chaozspike.batterynotifier.SettingsActivity$InnerFragment"
android:summary="@string/settings_activity_prefs_display_night_mode_sum"
android:title="@string/settings_activity_prefs_display_night_mode" />
<!-- ... -->
</PreferenceScreen>
我有以下问题:新的首选项屏幕显示在正常屏幕之上,我知道这可能是因为我替换了默认的R.id.content。截图:
但是,我想在不使用已弃用的内容或标头的情况下解决此问题。有可能实现吗?
【问题讨论】:
标签: android preferenceactivity preferencescreen preferencefragment