我愿做一个正常的PreferenceActivity(旧风格,无头),但与片段,并且不使用addPreferencesFromResource(id)
(因为折旧)。
现在,我通过把这个在我onCreate
实现这一点:PreferenceActivity多PreferenceScreens无头
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);
}
它工作得很好。然而,在内部具有PreferenceScreen
的时候有一个问题我preferences.xml
:
<?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
。截图:
但是我想不使用过时的东西或标题来解决这个问题。这有可能实现吗?