Android 如何在平板电脑上的首选项活动中选择默认标题?
我正在使用与平板电脑完全兼容的Android 如何在平板电脑上的首选项活动中选择默认标题?,android,header,preferenceactivity,Android,Header,Preferenceactivity,我正在使用与平板电脑完全兼容的首选项活动 为此,我将按照谷歌的建议在这方面工作 @覆盖 public void onBuildHeaders(列表目标){ loadHeadersFromResource(R.xml.preference_头,目标); } 我的问题是,我希望能够在启动活动时选择默认标题 例如,我有几个标题 一般设置 用户界面设置 网络设置 根据我参加的活动,我想显示正确的设置 有没有办法做到这一点?您可以使用PreferenceActivity.Header类动态创建Pre
首选项活动
为此,我将按照谷歌的建议在这方面工作
@覆盖
public void onBuildHeaders(列表目标){
loadHeadersFromResource(R.xml.preference_头,目标);
}
我的问题是,我希望能够在启动活动时选择默认标题
例如,我有几个标题
- 一般设置
- 用户界面设置
- 网络设置
有没有办法做到这一点?您可以使用PreferenceActivity.Header类动态创建PreferenceHeader
在创建调用PreferenceActivity的意图时,可以添加额外的字符串“extra\u SHOW\u FRAGMENT”来指定最初应显示的片段。传递要选择的片段的名称 例如,如果要选择“常规设置”标题(及其内容),可以使用以下代码:
final Intent intent = new Intent(this, ExtendedPreferenceActivity.class); // Assume we call it from an other activty
intent.putExtra(EXTRA_SHOW_FRAGMENT, GeneralSettingsFragment.class.getName());
startActivity(intent);
有关这方面的更多信息,请参见:
在提交给谷歌的一份问题报告中,有报道称,对于Android版本3.0,也不会自动选择正确的标题。有关问题报告及其解决方法,请参见此处:。默认情况下,您可以使用片段: 以下是我所做的:
public class PreferencesActivity extends SherlockPreferenceActivity {
/** Variables **/
/** Constants **/
private static final String CLASSTAG = PreferencesActivity.class.getSimpleName();
/** Class Methods **/
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v(CLASSTAG, "onCreate");
super.onCreate(savedInstanceState);
initializeUI();
}
@Override
public Intent getIntent() {
Log.v(CLASSTAG, "getIntent");
final Intent modIntent = new Intent(super.getIntent());
modIntent.putExtra(EXTRA_SHOW_FRAGMENT, SettingsFragment.class.getName());
modIntent.putExtra(EXTRA_NO_HEADERS, true);
return modIntent;
}
/** Private Functions **/
private void initializeUI() {
getSupportActionBar().hide();
}
/** Classes **/
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings_preference);
initializeUI();
}
private void initializeUI() { }
}
}
和默认xml(与之前的蜂巢版本相同…):
看完这份文件后,我不明白。。你能再具体一点吗?谢谢我未经测试就接受了它,并将在下周尝试该代码,但似乎是正确的。非常感谢。我找这个花了整整一个下午。。非常感谢。
public class PreferencesActivity extends SherlockPreferenceActivity {
/** Variables **/
/** Constants **/
private static final String CLASSTAG = PreferencesActivity.class.getSimpleName();
/** Class Methods **/
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v(CLASSTAG, "onCreate");
super.onCreate(savedInstanceState);
initializeUI();
}
@Override
public Intent getIntent() {
Log.v(CLASSTAG, "getIntent");
final Intent modIntent = new Intent(super.getIntent());
modIntent.putExtra(EXTRA_SHOW_FRAGMENT, SettingsFragment.class.getName());
modIntent.putExtra(EXTRA_NO_HEADERS, true);
return modIntent;
}
/** Private Functions **/
private void initializeUI() {
getSupportActionBar().hide();
}
/** Classes **/
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings_preference);
initializeUI();
}
private void initializeUI() { }
}
}
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/preferences_category_1">
<com.taptime.ui.preferences.ClickPreference
android:key="@string/preferences_conditions_key"
android:title="@string/preferences_conditions_title"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/preferences_category_2">
<com.newin.android.ui.widget.ClickPreference
android:key="@string/preferences_logout_key"
android:title="@string/preferences_logout_title"
android:summary="@string/preferences_logout_summary"/>
</PreferenceCategory>
</PreferenceScreen>