Android Preference 调用setDefaultValue设置默认值不生效;应该使用setValueIndex
如题,希望在ListPreference中设置一个默认值,且不能被设置为其他值。(即:不能点击更改值)
详细描述:比如,当判断是某种类型的机器时;不支持前置摄像头采集视频,只能使用后置摄像头。其他类型的机器,可选前置、后置摄像头。
上代码:
设置xml里的android:entries,android:entryValues
android:entries的值:
<string-array name="camera_key">
<item>前置摄像头</item>
<item>后置摄像头</item>
</string-array>
---------------------------------------------------------------------------
android:entryValues的值:
<string-array name="camera_value">
<item>0</item>
<item>1</item>
</string-array>
判断机型,设置固定值,且不能点击
if(DeviceInfo.isE700Devices()){
if(null != mCameraListPreference){
//mCameraListPreference.setDefaultValue(1); // 注意:这里是设置默认值,即初始化时,或值不存在,就用该值;所以这句不能指定默认值
mCameraListPreference.setValueIndex(1); // set the value to the given index from the entry values
mCameraListPreference.setEnable(false);
}
}
总结:希望在代码里指定ListPreference为某个固定值时,需要使用setValueIndex方法;不可以点击时,使用setEnable方法。