如何导航到嵌套的PreferencesScreen

jet*_*hro 7 android

在我的应用程序中,我嵌套了PreferencesScreen

<PreferencesScreen>
    <PreferencesScreen android:key="application">

    </PreferencesScreen>
</PreferencesScreen>
Run Code Online (Sandbox Code Playgroud)

现在我想开火直接Intent把我从currrent Activity带到应用程序首选项子屏幕.我怎样才能做到这一点?

GrA*_*And 6

在我的应用程序中,我有类似的任务以PreferencesScreen编程方式显示第二级.我做了什么:

  1. preferences.xml我分配了一个PreferencesScreen我想要显示的键(如问题所示).

  2. 为了表明PreferencesScreen我写道:

    final Intent preferencesActivity = new Intent(getBaseContext(), MyPreferencesActivity.class);
    preferencesActivity.putExtra("PREFERENCE_SCREEN_KEY", "key_of_preference_screen_to_show");
    startActivity(preferencesActivity);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后在我的方法onCreate的PreferenceActivity类中添加了以下代码:

    final Intent intent = getIntent();
    final String startScreen = intent.getStringExtra("PREFERENCE_SCREEN_KEY");
    if (startScreen != null) {
        getIntent().removeExtra("PREFERENCE_SCREEN_KEY");
        final Preference preference = findPreference(startScreen);
        final PreferenceScreen preferenceScreen = getPreferenceScreen();
        final ListAdapter listAdapter = preferenceScreen.getRootAdapter();
        final int itemsCount = listAdapter.getCount();
        int itemNumber;
        for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) {
            if (listAdapter.getItem(itemNumber).equals(preference)) {
                preferenceScreen.onItemClick(null, null, itemNumber, 0);
                break;
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

一句话......不仅是第二级PreferencesScreen,而且整个首选项层次结构都在这里加载.因此,如果按下Back按钮,PreferencesScreen将显示第一个(父).就我而言,这正是我所需要的.不确定你的.


Mic*_*ael 3

我使用的方法是将嵌套PreferenceScreen放入单独的 XML 文件中并在其他PreferenceActivity. 在这种情况下,您将能够使用首选项导航到此屏幕,并以通常的方式从另一个屏幕Preference.setIntent()启动此屏幕。ActivityActivity