2014-10-03 2 views
10

캐스트 할 수없는보기 :안드로이드 MultiSelectListPreference, java.lang.String의 내가 내 설정을 MultiSelectListPreference을 구현하려고 java.util.Set을

<MultiSelectListPreference 
    android:title="@string/title" 
    android:summary="@string/message" 
    android:key="pref_foobar" 
    android:defaultValue="@array/empty_array" 
    android:entries="@array/fooArray" 
    android:entryValues="@array/fooValues" /> 

배열 :

<resources> 
    <string-array name="fooArray"> 
     <item>Foo</item> 
     <item>Bar</item> 
    </string-array> 
    <string-array name="fooValues"> 
     <item>foo_value</item> 
     <item>bar_value</item> 
    </string-array> 
    <string-array name="empty_array"/> 
</resources> 

그러나이 제공 나에게 다음과 같은 예외 :

java.lang.RuntimeException가 : 활동 COMPONENTI을 시작할 수 없습니다 NFO {com.myproject/.SettingsActivity} : java.lang.ClassCastException가 : http://pastebin.com/kBDByXY5

어떤 아이디어가 무슨 잘못 : java.lang.String의는 에 java.util.Set을

전체 스택 트레이스를 캐스팅 할 수 없습니다 ?


코드 : 이미 장치 또는 에뮬레이터에서이 키 아래 일반 String 선호도를 가지고있는 것처럼

public class SettingsActivity extends Activity { 

    private static final String TAG_SETTINGS_FRAGMENT = "SETTINGS_FRAGMENT"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (savedInstanceState == null) { 
      getFragmentManager().beginTransaction() 
           .replace(android.R.id.content, new PreferenceFragment(), TAG_SETTINGS_FRAGMENT).commit(); 
     } 
    } 

    public static class PreferenceFragment extends android.preference.PreferenceFragment{ 

     public PreferenceFragment() { 
      //required 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preferences); 
     } 
    } 
} 
+0

여기에 코드를 붙여 넣을 수 있습니까? – Kiloreux

+1

@AIL 설정은 xml에서 생성되기 때문에 특별한 코드는 없습니다. 'addPreferencesFromResource (R.xml.preferences);'모든 마법을 수행합니다. –

+0

내 안드로이드 프로젝트에 코드를 복사하여 복사해도 아무런 문제가 없습니다. 프로젝트를 다시 빌드하고 문제가 지속되면 알려주십시오. – mrroboaat

답변

26

느낀다. 앱을 완전히 제거하고 다시 설치하거나 설정의 화면에서 앱에 대해 '데이터 지우기'를 사용하여 기존 SharedPreferences을 삭제하십시오.

+1

+1 사실입니다. 문제 해결됨. –

+0

내 생명을 구했어! – WenChao

+0

그래,이게 그거야. 나는 모든 다른 환경 설정 유형을 가지고 장난하고 있었고, 마침내 ListPreference에 정착했을 때 "java.util.hash는 java.lang.String으로 형 변환 될 수 없다"라는 오류가 발생하기 시작했습니다. 내 기기에서 앱을 제거하고 Android Studio에서 앱을 실행하기 만하면 다시 문제가 해결되었습니다. – Chris