如何在平板电脑上的PreferenceActivity中选择默认标题?

时间:2012-01-19 11:16:19

标签: android header preferenceactivity

我正在使用与{strong>平板电脑完全兼容的PreferenceActivity

为此,我将按照page Google 的建议工作。

@Override
public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.preference_headers, target);
}

我的问题是,我希望能够在启动活动时选择默认标头。

例如,我有几个标题;

  • 常规设置
  • 用户界面设置
  • 网络设置

根据我来自哪个活动,我想显示正确的设置。

有没有办法实现这个目标?

3 个答案:

答案 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>