2014-09-25 3 views
3

나는 분 값을 선택하기 위해 numberPicker를 구현하려고합니다.Android NumberPicker NullPointer 이유가 무엇인가요?

public class MainActivity extends Activity { 


NumberPicker minutePicker; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Auswahl Minuten zum starten/Stoppen aller 
    minutePicker = new NumberPicker(MainActivity.this); 
    minutePicker = (NumberPicker) findViewById(R.id.minuten_picker); 
    minutePicker.setMaxValue(30); 


    minutePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
      abschaltzeit = minutePicker.getValue(); 
     } 
    }); 

    minutePicker.setValue(0); 
    minutePicker.setWrapSelectorWheel(false); 

} 
} 

XML :

<NumberPicker 
    android:id="@+id/minuten_picker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_row="6" 
    android:layout_column="0" 
    android:paddingLeft="20dp" /> 

로그 :

,691 코드에 따라

minutePicker = (NumberPicker) findViewById(R.id.minuten_picker);

:

하지만 난이 라인에서 NullPointer 예외를 얻고있다

09-25 11:00:09.749 10687-10687/de.carsten.awesome.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: de.carsten.awesome.app, PID: 10687 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{de.carsten.awesome.app/de.carsten.awesome.app.MainActivity}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
      at android.app.ActivityThread.access$800(ActivityThread.java:135) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5001) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at de.carsten.awesome.app.MainActivity.onCreate(MainActivity.java:83) 
      at android.app.Activity.performCreate(Activity.java:5231) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
      at android.app.ActivityThread.access$800(ActivityThread.java:135) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5001) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

프로젝트를 지운 다음 다시 컴파일하십시오. –

+1

그리고 logcat을 게시하십시오. –

+0

미안, 변경된 사항 없음, 여전히 NPE가 발생 함 – Steakschen

답변

3
minutePicker = new NumberPicker(MainActivity.this); 
minutePicker = (NumberPicker) findViewById(R.id.minuten_picker); 

프로그래밍 방식으로 NumberPicker을 만든 다음 어떤 findViewById() 수익률 기준을 덮어 쓰는 것입니다. activity_main 레이아웃에 minuten_picker이 없으면 null을 반환합니다.

  • 다른 하나만 선택하십시오. 사전에 생성하거나 팽창 한보기 계층 구조에서 찾으십시오.

  • 프로그래밍 방식으로 new NumberPicker()을 선택한 경우 활동보기 계층 구조의 일부 레이아웃에 추가해야합니다. setContentView()

  • 인플레이션 방식을 선택하는 경우 XML 레이아웃 파일에보기가 있는지 확인하십시오. 난 당신이보고있는 NPE를 추측하고있어

당신이 minutePicker에 메소드 (method)를 불러들이려고하고있는 다음 줄에 실제로이며 널 (null)입니다.

+0

또한 줄이없는 채로 시도했습니다. minutePicker = new NumberPicker (MainActivity.this); 하지만 다음 줄에 NPE가 올바르게 표시됩니다. – Steakschen

0

사과드립니다.

나는 코드를 Create Fragment의 MainActivity에서 옮기고 rootView.findView와 함께 작동합니다.

미안하지만 나는 Fragement Konzept를 처음 접했습니다.

도움을 주셔서 감사합니다.

관련 문제