我正在使用与{strong>平板电脑完全兼容的PreferenceActivity
。
为此,我将按照page中 Google 的建议工作。
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
我的问题是,我希望能够在启动活动时选择默认标头。
例如,我有几个标题;
根据我来自哪个活动,我想显示正确的设置。
有没有办法实现这个目标?
答案 0 :(得分:12)
创建Intent以调用PreferenceActivity时,可以添加额外字符串'EXTRA_SHOW_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);
有关这方面的更多信息,请访问:http://developer.android.com/reference/android/preference/PreferenceActivity.html
在向Google发布的问题报告中,据报道,对于Android 3.0版,也不会自动选择正确的标题。有关问题报告及其解决方法,请参阅此处:issue report。
答案 1 :(得分:0)
您可以使用PreferenceActivity.Header类动态创建PreferenceHeaders http://developer.android.com/reference/android/preference/PreferenceActivity.Header.html
答案 2 :(得分: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(以前的HoneyComb版本......):
<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>