2012-11-05 3 views
10

요일에 내 회 전자를 채우는 데 문제가 있습니다.android : strings.xml에서 회 전자를 채우기

레이아웃 XML :

public class AddModule extends Activity { 
    Spinner day; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     day = (Spinner)findViewById(R.id.week_spinner); 

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.days_of_week, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     day.setAdapter(adapter); 
     setContentView(R.layout.activity_add_module); 
    } 
} 

이 앱이 충돌을 일으키는는, setAdapter 라인이다 :

<resources> 
    <string-array name="days_of_week"> 
    <item>Monday</item> 
    <item>Tuesday</item> 
    <item>Wednesday</item> 
    <item>Thursday</item> 
    <item>Friday</item> 
    </string-array> 
</resources> 

자바

<Spinner 
    android:id="@+id/week_spinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:drawSelectorOnTop="true"/> 

strings.xml의. 다음 오류가 발생합니다.

11-05 21:24:31.235: W/dalvikvm(867): threadid=1: thread exiting with uncaught exception (group=0x40a9a228) 
11-05 21:24:31.245: E/AndroidRuntime(867): FATAL EXCEPTION: main 
11-05 21:24:31.245: E/AndroidRuntime(867): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cathal.timetable/com.cathal.timetable.AddModule}: java.lang.NullPointerException 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread.access$600(ActivityThread.java:139) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.os.Looper.loop(Looper.java:154) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread.main(ActivityThread.java:4974) 
11-05 21:24:31.245: E/AndroidRuntime(867): at java.lang.reflect.Method.invokeNative(Native Method) 
11-05 21:24:31.245: E/AndroidRuntime(867): at java.lang.reflect.Method.invoke(Method.java:511) 
11-05 21:24:31.245: E/AndroidRuntime(867): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-05 21:24:31.245: E/AndroidRuntime(867): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-05 21:24:31.245: E/AndroidRuntime(867): at dalvik.system.NativeStart.main(Native Method) 11-05 21:24:31.245: E/AndroidRuntime(867): Caused by: java.lang.NullPointerException 11-05 21:24:31.245: E/AndroidRuntime(867): at com.cathal.timetable.AddModule.onCreate(AddModule.java:18) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.Activity.performCreate(Activity.java:4538) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071) 
11-05 21:24:31.245: E/AndroidRuntime(867): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158) 
11-05 21:24:31.245: E/AndroidRuntime(867): ... 11 more 

어제는 정상적으로 작동했습니다. 나는 어쩌면 무언가를 바꾸 었는지 또는 일식 문제가 있는지 알 수 없다.

답변

8
super.onCreate(savedInstanceState); 
setContentView(yourView); 
day = (Spinner)findViewById(R.id.week_spinner); 

xml에서 회 전자를 얻기 전에보기를 설정하는 것을 잊었습니다. 보기를 설정하지 않으면 findViewByIdnull을 반환합니다.

null의 모든 결과는 NullPointerException입니다.

+0

내게 upvote 때문에이 권리, 나는 단순히 대체 접근 방식을 보여주고있어. – Sam

33

Nambari는 NullPointerException을받는 이유와 findViewById()을 올바르게 사용하는 방법을 설명합니다.

android:entries="@array/days_of_week" 

을 그리고 당신은 onCreate()에 어댑터에 대한 모든 참조를 제거 할 수 있습니다

내가 설정에 기본 설정을 사용하는 스피너를 쉬운 방법을 지적 할, 단순히 XML이를 추가 할 수 있습니다.

+0

둘 다 감사합니다! – user1797190

+0

훨씬 더 ... – AFD

+0

플립 IDK 왜 내가 이것을 생각하지 못했습니다. briliiant !! – Manny265

관련 문제