我想做一个普通的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);
}
而且工作正常。但是,在我的
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
。屏幕截图:但是,我想在不使用不推荐使用的内容或标题的情况下解决此问题。那有可能实现吗?
最佳答案
只需使用PreferenceActivity.EXTRA_SHOW_FRAGMENT
和PreferenceActivity.EXTRA_NO_HEADERS
仅显示一个片段并跳过标题:
//Note #1: ExtendedPreferenceActivity extends PreferenceActivity
//Note #2: ExtendedPreferenceFragment extends PreferenceFragment and is
//declared as an inner static class in ExtendedPreferenceActivity
Intent intent = new Intent(context, ExtendedPreferenceActivity.class );
intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, ExtendedPreferenceActivity.ExtendedPreferenceFragment.class.getName() );
intent.putExtra(PreferenceActivity.EXTRA_NO_HEADERS, true );
startActivity(intent);
关于android - 具有多个没有标题的PreferenceScreens的PreferenceActivity,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35875581/