1

Android에 대해 PreferenceActivity에서 작업하고 있습니다. ListPreference 개체를 사용하는 코드의 일부인 here을 따르고 있습니다. 다음과 같이 내 preferences.xml은 다음과 같습니다 PreferenceActivity에서 createViewFromResource에 대한 NullPointerException

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory android:title="@string/prefs_app" > 

     <ListPreference 
     android:key="@string/gps_freq_main_key" 
     android:title="@string/gps_freq_main_title" 
     android:summary="@string/gps_freq_main_summary" 
     android:entries="@array/gps_freq_main_entries" 
     android:entryValues="@array/gps_freq_main_entryValues" 
     android:defaultValue="every second (recommended)" /> 
    </PreferenceCategory> 

    <PreferenceCategory 
     android:title="@string/prefs_other"> 

     <PreferenceScreen 
      android:key="@string/app_info_key" 
      android:title="@string/app_info_title" 
      android:summary="@string/app_info_summary"> 

      <Preference 
      android:key="@string/app_copyright_key" 
      android:title="@string/app_copyright_title" 
      android:summary="@string/app_copyright_summary" /> 

      <Preference 
      android:key="@string/app_version_key" 
      android:title="@string/app_version_title" /> 

    </PreferenceScreen> 
</PreferenceCategory> 

언급 한 문자열의 모든

res/values/strings.xml에 정의되어 있습니다. 두 배열은 res/values/arrays.xml에 정의되어 있습니다 :이 ListPreference (활동이 제대로 실행, 다른 모든 환경 설정 작업)을 선택하면

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer-array name="gps_freq_main_entries"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
    <item>10</item> 
    <item>20</item> 
    <item>30</item> 
    <item>60</item> 
    <item>120</item> 
    <item>300</item> 
    <item>600</item> 
    <item>900</item> 
    <item>1200</item> 
    </integer-array> 
    <string-array name="gps_freq_main_entryValues"> 
    <item>every second (recommended)</item> 
    <item>2 seconds</item> 
    <item>3 seconds</item> 
    <item>4 seconds</item> 
    <item>5 seconds</item> 
    <item>10 seconds</item> 
    <item>20 seconds</item> 
    <item>30 seconds</item> 
    <item>1 minute</item> 
    <item>2 minutes</item> 
    <item>5 minutes</item> 
    <item>10 minutes</item> 
    <item>15 minutes</item> 
    <item>30 minutes</item> 
    </string-array> 

</resources> 

문제가 발생합니다. 이 ListPreference에 영향을 미치는 코드는 PreferenceActivity입니다. 여기 내입니다 logcat :

08-24 15:34:49.428: ERROR/AndroidRuntime(1250): Uncaught handler: thread main exiting due to uncaught exception 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250): java.lang.NullPointerException 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.AbsListView.obtainView(AbsListView.java:1269) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1117) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.ListView.onMeasure(ListView.java:1030) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.View.measure(View.java:7115) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:350) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:278) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.View.measure(View.java:7115) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:350) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:278) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.View.measure(View.java:7115) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.View.measure(View.java:7115) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.View.measure(View.java:7115) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewRoot.performTraversals(ViewRoot.java:698) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1482) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.os.Looper.loop(Looper.java:123) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at android.app.ActivityThread.main(ActivityThread.java:3948) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):  at dalvik.system.NativeStart.main(Native Method) 

어떤 도움을 주시면 감사하겠습니다!

+1

깨끗한 빌드를 시도하십시오. 생성 된 파일이 동기화되지 않는 경우가 있습니다. –

+0

@ jeffamaphone 이미했는데 문제가 해결되지 않았습니다. – Phil

+0

나는 또한 모든 데이터를 지우기 위해 이전 설치 프로그램을 삭제하려고 시도했지만 여전히 발생하고 있습니다. – Phil

답변

2

다른 응용 프로그램에서이 문제가 발생했습니다. 이를 해결하기 위해 정수 배열 대신 문자열 배열을 사용했습니다. 왜 이것이 필요한지 잘 모르겠지만 효과가 있습니다.

+2

+1 int 배열을 AlertDialog의 singleChoiceItem으로 사용하려고하면 일부 닌자 예외 (배열을 int로 변환하는 방법이없는)가 발생합니다. – Buffalo

관련 문제