【发布时间】:2017-01-07 20:04:31
【问题描述】:
我需要为动态创建的 ListPreference 设置默认值。它是动态创建的,因为它是相机对焦模式的偏好,并且每个设备都可以有不同的对焦模式集。 listPreferenceFocusMode.setDefaultValue(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 不起作用,或者 How to set the Default Value of a ListPreference 在此链接中接受的答案不起作用,而且它是不正确的,因为它会覆盖用户的选择。
// Preview Focus Mode
int indexContinuous = 0;
if (focusModes != null && focusModes.size() > 0) {
entries = new String[focusModes.size()];
entryValues = new String[focusModes.size()];
for (int i = 0; i < focusModes.size(); i++) {
entryValues[i] = entries[i] = focusModes.get(i);
if (entryValues[i].equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
indexContinuous = i;
}
}
listPreferenceFocusMode.setEntries(entries);
listPreferenceFocusMode.setEntryValues(entryValues);
if (listPreferenceFocusMode.getValue() == null) {
listPreferenceFocusMode.setValueIndex(indexContinuous);
}
if (focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
listPreferenceFocusMode.setDefaultValue(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
} else {
listPreferenceFocusMode.setDefaultValue(Camera.Parameters.FOCUS_MODE_AUTO);
}
} else {
listPreferenceFocusMode.setEnabled(false);
listPreferenceFocusMode.setSummary("Focus Modes are not supported");
}
我尝试使用listPreferenceFocusMode.getValue() 设置defaultValue 或获取值,但它也不起作用,因为listPreferenceFocusMode.getValue() 不是null。提前致谢。
【问题讨论】:
标签: android android-preferences listpreference