2017-01-07 12 views
1

동적으로 생성되는 ListPreference에 대한 기본값을 설정해야합니다. 동적으로 생성되는 이유는 카메라 초점 모드를 선호하고 각 장치가 서로 다른 포커스 모드를 가질 수 있기 때문입니다. listPreferenceFocusMode.setDefaultValue(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);이 작동하지 않거나이 링크에서 How to set the Default Value of a ListPreference 대답이 허용되지 않습니다. 사용자 선택을 무시하기 때문에 올바르지 않습니다. 안드로이드는 ListPrefrence의 기본값을 동적으로 생성하고 채 웁니다.

// 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"); 
    } 

나는 DEFAULTVALUE을 설정하거나 listPreferenceFocusMode.getValue()를 사용하여 값을 받고 있지만 listPreferenceFocusMode.getValue()null이 없기 때문에 그것은 또한 작동하지 않습니다했습니다. 미리 감사드립니다.

답변

0

부울 플래그를 사용하여 응용 프로그램의 첫 번째 시작인지 확인했습니다. 그렇다면 listPreferenceFocusMode.setValueIndex(indexContinuous);을 설정하고 true로 설정하고 isFirstStart 플래그를 sharedPrefrerences에 저장하여 setValueIndex 메소드를 한 번만 호출하십시오. listPrefrence이 동적 기본값을 기억하고 있다면 좋지만 그렇지 않습니다.