android - 如何打开或模拟点击偏好类别内的android ListPreference?

标签 android android-preferences listpreference

我正在尝试以编程方式打开存在于 PreferenceCategory 中的 ListPreference。 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”,并将其显示给用户。我调查了this主题,提供此解决方案:

// 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 的 getOrder() 值的“pos”也不起作用。

最佳答案

我知道这是一个非常古老的话题,但我刚刚遇到了类似的问题,所以这里是我基于 this 的简短解决方案一个

    ListAdapter listAdapter = getPreferenceScreen().getRootAdapter();

    for (int itemNumber = 0; itemNumber < listAdapter.getCount(); itemNumber++)
        if (listAdapter.getItem(itemNumber).equals(findPreference("pref_list")))
            getPreferenceScreen().onItemClick(null, null, itemNumber, 0);

关于android - 如何打开或模拟点击偏好类别内的android ListPreference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671560/

相关文章:

android - 原生android库编译

android - 从 Activity 切换到嵌套的 PreferenceScreen

android - 在 ListPreference 中以编程方式设置默认值

android - 使用ADB获取屏幕状态

Android:使用自定义适配器设置 AutoCompleteTextView

android - 更改特定首选项的背景

android - 为什么 ListView 在 ListPreference 对话框中停留在 TextView 之上?

android - AsyncTask 没有锁定主线程?

java - 在Android WebView上实现后退按钮

android - 如何以编程方式关闭 Android 设置菜单?