2011-03-15 6 views
1

내 PreferenceScreen에서 ListPreference를 검색하려면 어떻게합니까?PreferenceScreen 내 ListPreference 검색

다음과 같이 시도해 보았습니다. 둘 다 null 예외를 throw합니다.

findPreference (키) getPreferenceScreen() findPreference (키)

private void loadLayout(int appWidgetId) { 
SharedPreferences.Editor shared_config = prefs.edit(); 
Layout layout = db_adapter.fetchLayout(appWidgetId); 

... 

ListPreference widget_text_color = (ListPreference) findPreference("widget_text_color"); 
widget_text_color.setValue(String.valueOf(layout.getTextColor())); 

... 
shared_config.commit(); 

}

<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android"> 
... 
<PreferenceCategory android:title="Layout/Output"> 
    ... 
    <ListPreference 
     android:key="widget_text_color" 
     android:title="Text color" 
     android:summary="Choose text color" 
     android:entries="@array/colors" 
     android:entryValues="@array/colors_rgb" 
     android:dialogTitle="Choose a color" /> 
    ... 
</PreferenceCategory> 

03-15 17. 50 : 42.250 : ERROR/AndroidRuntime (441) : 치명적인 예외 : 주 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : java.lang.RuntimeExcepti on : 활동을 시작할 수 없습니다. ComponentInfo {com.feral.widget/com.feral.widget.Prefs} : java.lang.NullPointerException 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.app. ActivityThread.performLaunchActivity (ActivityThread.java:1622) 03-15 17:50:42.250 : ERROR/AndroidRuntime (441) : android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1638) 03-15 17:50 : 42.250 : ERROR/AndroidRuntime (441) : android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.app.ActivityThread $ H .handleMessage (ActivityThread.java:928) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.os.Handler.dispatchMessage (Handler.java:99) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.os.Looper.loop (Looper.java:123) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.app.ActivityThread.main (ActivityThread.java:3647) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : at java.lang.reflect.Method.invokeNative (네이티브 메소드) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : java.lang.reflect.Method.invoke (Method.java:507) 03- 15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441)) : at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : at dalvik.system.NativeStart.main (네이티브 메소드) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : 원인 : java.lang.NullPointerException 03-15 17:50:42. 250 : ERROR/AndroidRuntime (441) : com.feral.widget.Prefs.loadLayout (Prefs.java:234) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : com.feral.widget. Prefs.loadPreference (Prefs.java:267) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : com.feral.widget.Prefs.onCreate (Prefs.java:77) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 03-15 17 : 50 : 42.250 : ERROR/AndroidRuntime (441) : android.app.ActivityThread. performLaunchActivity (ActivityThread.java:1586)

+0

예외와 함께 코드를 표시하십시오. – user432209

+0

추가 된 함수 및 예외 – user634545

+0

라인이 라인 234 –

답변

1

addPreferencesFromResource(R.xml.preferences)을 PreferenceActivity에서 만들었습니까?

+0

맞습니다. – user634545

+0

onCreate에서 addPreferencesFromResource (R.xml.preferences) 전에 loadLayout()을 호출하고있었습니다. 내 잘못, 고마워. – user634545

관련 문제