1

Мой SettingsActivity имеет экраны суб-предпочтений. Я хочу прямо открыть один из вложенных PreferenceScreen в SettingsActivity от другого Activity на кнопку кликнуть.Открыть Экран настроек в настройкахActivity при нажатии кнопки

В принципе, я хочу, чтобы пользователь был перенаправлен из Activity в подсечку экрана SettingsActivity. Есть ли способ сделать это?

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory 
     android:title="@string/pref_header_general"> 
    </PreferenceCategory> 
    <ListPreference 
    .. 
    /> 
    <PreferenceScreen <!--Show this sub preference screen in Setttings on button click --> 

     android:key="@string/pref_key_open_this_screen" 
     android:summary="@string/pref_summary_sample" 
     android:title="@string/pref_title_sample" > 
     <SwitchPreference 
      android:defaultValue="@string/pref_summary_enabled" 
      android:key="@string/pref_key_enabled" 
      android:title="@string/pref_title_enabled" 
      android:summary="@string/pref_summary_reminder_enabled"/> 
     <ListPreference 
     .. 
     /> 
     <ListPreference 
     .. 
     /> 
    </PreferenceScreen> 
</PreferenceScreen> 

ответ

1

Я нашел решение после некоторого исследования. Надеюсь, это поможет кому-то другому. Мы можем использовать приведенный ниже код для имитации щелчка на экране суб-предпочтений.

  • Начинайте с SettingsActivity с вашей деятельности.
  • Pass экстра пусть SettingsActivity знает, что ему нужно, чтобы открыть экран к югу предпочтение
  • Если SettingsActivity получает намерение, запустить следующий код и он будет открыть экран к югу предпочтение

Код:

PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.pref_key_root_screen)); 
PreferenceScreen subPreferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.pref_key_sub_preference_screen)); 
final ListAdapter listAdapter = preferenceScreen.getRootAdapter(); 
final int itemsCount = listAdapter.getCount(); 
int itemNumber; 
for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { 
    if (listAdapter.getItem(itemNumber).equals(subPreferenceScreen)) { 
     //simulates click on the sub-preference 
     preferenceScreen.onItemClick(null, null, itemNumber, 0); 
     break; 
    } 
}