单击按钮打开 SettingsActivity 的子首选项屏幕
Open a Sub-Preference Screen of SettingsActivity on button click
我的 SettingsActivity
有子偏好屏幕。我想在单击按钮时从另一个 Activity
中直接打开 SettingsActivity
中的嵌套 PreferenceScreen
.
基本上,我希望将用户从 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>
经过一番研究,我找到了解决办法。希望它能帮助别人。我们可以使用下面的代码来模拟点击子偏好屏幕。
- 从您选择的 activity 开始
SettingsActivity
的意图。
- 传递一个额外的让
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;
}
}
我的 SettingsActivity
有子偏好屏幕。我想在单击按钮时从另一个 Activity
中直接打开 SettingsActivity
中的嵌套 PreferenceScreen
.
基本上,我希望将用户从 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>
经过一番研究,我找到了解决办法。希望它能帮助别人。我们可以使用下面的代码来模拟点击子偏好屏幕。
- 从您选择的 activity 开始
SettingsActivity
的意图。 - 传递一个额外的让
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;
}
}