我正在尝试以编程方式打开一个 ListPreference,它存在于 PreferenceCategory 中。XML 结构类似于:
<PreferenceScreen
android:key="pref_screen" >
<PreferenceCategory
android:title="Category"
andorid:key="pref_category">
<ListPreference
android:key="pref_list"
android:title="List" />
</PreferenceCategory>
</PreferenceScreen>
我的目标是以编程方式打开“pref_list”,并将其显示给用户。我研究了这个话题,提供了这个解决方案:
// the preference screen your item is in must be known
PreferenceScreen screen = (PreferenceScreen) findPreference("pref_screen");
// the position of your item inside the preference screen above
int pos = findPreference("pref_list").getOrder();
// simulate a click / call it!!
screen.onItemClick( null, null, pos, 0 );
这对于没有 PreferenceCategory 的 PreferenceScreen 非常有效,但我无法让它适用于我的情况(当 ListPreference 位于 PreferenceCategory 内时)。
我该如何针对我的情况进行修改?或者有没有其他解决方案?
我在 PreferenceCategory 中找不到类似于 PreferenceScreen 的方法onItemClick()
。为我的 PreferenceCategory的值更改 'pos'getOrder()
也不起作用。