2014-09-25 2 views
3

Я пытаюсь реализовать numberPicker для выбора минутных значений.Android NumberPicker NullPointer почему?

Но я получаю NullPointer исключение в этой строке:

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

следующий код:

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" /> 

Log:

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() возвращается. Он возвращает null, если ваш макет activity_main не содержит minuten_picker.

  • Выберите только другое: создайте его программически или найдите его из иерархии вида, которую вы надули.

  • Если вы выбрали программный способ new NumberPicker(), не забудьте добавить его в какой-либо макет в иерархии вида деятельности, например. с setContentView()

  • Если вы выбрали способ инфляции, убедитесь, что у вас есть представление в вашем файле макета XML.

Я предполагаю, что NPE вы видите на самом деле на следующей строке, где вы пытаетесь вызвать метод на minutePicker и это нуль.

+0

Я также пробовал его без линии: минута Picker = new NumberPicker (MainActivity.this); , но вы правы, получая NPE в следующей строке – Steakschen

0

Извиняюсь.

Я переместил код из MainActivity в создающем фрагменте и работает с rootView.findView.

Извините, но я новичок в Fragement Konzept.

Большое спасибо за помощь!

Смежные вопросы