最近项目用到了ListPreference,网上看了很多例子,都是类似的,感觉也不难,但是自己写的时候,就发现了一个小问题,但是在网上搜来搜去,都没有发现有人提出遇到类似的问题,似乎大家都很顺利哈,=_=。这个问题改起来很简单,但是花了我不少时间才知道问题所在,囧~~~
当我按照网上很多例子所说的,首先在res路径下生成一个新的目录,xml,然后在这个文件夹下新建一个xml文件,如pre.xml,然后在里面进行配置,细节就不说了,直接上xml代码吧,由于是测试代码,所有很多信息都比较随便。如下。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
android:title="Time setting"
android:dialogMessage="Choose the number you need"
android:key="timeToRefresh"
android:entries="@array/refreshTimeEntries"
android:entryValues="@array/refreshTimeValues"
android:dialogTitle="Please choose a number"
android:defaultValue="500"
android:summary="testing"
/>
</PreferenceScreen>
当然,由于上面有引用到一些数据,需要在strings.xml文件中写好,对应片段如下:
<string-array name="refreshTimeEntries">
<item>1s</item>
<item>2s</item>
<item>3s</item>
<item>5s</item>
</string-array>
<string-array name="refreshTimeValues">
<item>100</item>
<item>200</item>
<item>300</item>
<item>500</item>
</string-array>
最后,是我的java代码,如果不做什么响应,代码部分很简单:
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Test_list extends PreferenceActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.test_list);
}
}
但是,运行的时候就出现问题了,没有报任何的错误,只是弹出的列表框没有显示任何的内容,如下图:
在网上搜索很久,终于找到其中的原因,就是设置ListPreference的属性的时候,不能设置“android:dialogMessage="Choose the number you need" ”这个属性,当把这一行删掉之后,就可以正常显示了,如下图:
至于为什么会这样我目前还不知道,有遇到类似问题的欢迎一起交流一下。在google上的Issuse上已经有人将这个问题反馈了,我的答案也是在这里找到的,这是地址:
http://code.google.com/p/android/issues/detail?id=4497。