2014-04-15 7 views
0

"Runners"의 배열을 ArrayList의 정보로 채우려고하는데 null 포인터 예외가 발생합니다. 저는 arraylist와 Runners의 배열 크기를 모두 인쇄했습니다.안드로이드 응용 프로그램의 java.lang.NullPointerException.

이라면 .. 닥터 버크는 당신이

04-15 09:09:45.009: E/AndroidRuntime(28225): FATAL EXCEPTION: main 
04-15 09:09:45.009: E/AndroidRuntime(28225): Process: com.example.runtracker, PID: 28225 
04-15 09:09:45.009: E/AndroidRuntime(28225): java.lang.IllegalStateException: Could not execute method of the activity 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.view.View$1.onClick(View.java:3865) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.view.View.performClick(View.java:4480) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.view.View$PerformClick.run(View.java:18673) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.os.Handler.handleCallback(Handler.java:733) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.os.Handler.dispatchMessage(Handler.java:95) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.os.Looper.loop(Looper.java:157) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.app.ActivityThread.main(ActivityThread.java:5872) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at java.lang.reflect.Method.invoke(Method.java:515) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at dalvik.system.NativeStart.main(Native Method) 
04-15 09:09:45.009: E/AndroidRuntime(28225): Caused by: java.lang.reflect.InvocationTargetException 
04-15 09:09:45.009: E/AndroidRuntime(28225): at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at java.lang.reflect.Method.invoke(Method.java:515) 
04-15 09:09:45.009: E/AndroidRuntime(28225): at android.view.View$1.onClick(View.java:3860) 
04-15 09:09:45.009: E/AndroidRuntime(28225): ... 11 more 
04-15 09:09:45.009: E/AndroidRuntime(28225): Caused by: java.lang.NullPointerException 
04-15 09:09:45.009: E/AndroidRuntime(28225): at com.example.runtracker.MainActivity.onClickFinish(MainActivity.java:99) 
04-15 09:09:45.009: E/AndroidRuntime(28225): ... 14 more 
+1

이 줄에는 무엇이 있습니까? MainActivity.java:99 – Eugene

+0

이것이 전부 필요한 코드라면,'runnerName' EditText를 초기화하지 않았습니다. –

+0

배열'r'의 초기화 후에 모든 요소는'null'입니다. 'null' 인 객체의 메소드를 호출하려고하면 예외가 발생합니다. – fabian

답변

4

:

r = new Runner[runners.size()];  
int i =0;  
for(String name : runners){    
    r[i].setFirst(name); 

당신은 배열이나 Runner의하지만 배열의 각 항목은 기본적으로 null입니다 있습니다. 추가

r[i] = new Runner(); 

항목을 초기화하십시오.

-1

초기화를 더

private Runner r[]; 
private EditText runnerName,trackLength,raceDistance; 
private ArrayList<String> runners = new ArrayList<String>(); 

public void onClickSetRunner(View v){ 
    runners.add(runnerName.getText().toString()); 
    runnerName.setText(""); 
} 

public void onClickFinish(View v){   
    r = new Runner[runners.size()];  
    int i =0;  
    for(String name : runners){    
     r[i].setFirst(name); 
     i++; 
    } 


} 

로그 캣 (나는 그것을 포맷 얻을 couldnt는 죄송합니다) 필요한 경우 의견을 주시기 바랍니다 문제를 해결하기 위해 필요하다고 생각 코드를 포함 runnerName을 사용하기 전에. 당신은 실제로 r[i]를 초기화하지 않은

runnerName.setText(""); 
    runners.add(runnerName.getText().toString()); 
0

onClickFinish에 새로운 주자 배열을 만들었습니다. 그러나 배열에 새 Runner 객체를 만들지 않으므로 r[i]이 null입니다.

관련 문제