2014-01-19 6 views
0

Не совсем уверен, почему им получить следующую ошибку, так как код снимается с другой страницы и работает нормально там ...NullPointerException Android - Невозможно начать деятельность

01-19 22:38:06.443: E/AndroidRuntime(27945): FATAL EXCEPTION: main 
01-19 22:38:06.443: E/AndroidRuntime(27945): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fooditemmonitor/com.example.fooditemmonitor.CurrentItems}: java.lang.NullPointerException 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread.access$700(ActivityThread.java:159) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.os.Looper.loop(Looper.java:176) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread.main(ActivityThread.java:5419) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at java.lang.reflect.Method.invoke(Method.java:525) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at dalvik.system.NativeStart.main(Native Method) 
01-19 22:38:06.443: E/AndroidRuntime(27945): Caused by: java.lang.NullPointerException 
01-19 22:38:06.443: E/AndroidRuntime(27945): at com.example.fooditemmonitor.CurrentItems.onCreate(CurrentItems.java:22) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.Activity.performCreate(Activity.java:5372) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
01-19 22:38:06.443: E/AndroidRuntime(27945): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
01-19 22:38:06.443: E/AndroidRuntime(27945): ... 11 more 

current_inventory.xml

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/GridLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:columnCount="1" > 

    <Button 
     android:id="@+id/editItemCurrent" 
     android:layout_width="145dp" 
     android:layout_column="0" 
     android:layout_gravity="right|bottom" 
     android:layout_row="0" 
     android:text="@string/editItem" /> 

    <Button 
     android:id="@+id/scanCurrent" 
     android:layout_width="160dp" 
     android:layout_column="0" 
     android:layout_gravity="left|bottom" 
     android:layout_row="0" 
     android:text="@string/scan" /> 

</GridLayout> 

CurrentItems.java

package com.example.fooditemmonitor; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class CurrentItems extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.current_inventory); 

     final Button addButton = (Button) findViewById(R.id.scanner); 
     final Button editInventoryButton = (Button) findViewById(R.id.editItem); 

     addButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(CurrentItems.this, AddItem.class)); 
      } 
     }); 

     editInventoryButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(CurrentItems.this, EditItems.class)); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
} 

addButton.setOnClickListener (новый OnClickListener() {// ЛИНИЯ 22

код размещен из файлов будут связаны с этим. Проверьте, правильно ли указаны имена файлов.

Вся помощь будет оценена - спасибо!

ответ

5

Я думаю, что вы сделали опечатку, оно должно быть:

final Button addButton = (Button) findViewById(R.id.editItemCurrent); 
final Button editInventoryButton = (Button) findViewById(R.id.scanCurrent); 

Я не вижу никаких кнопок с идентификатором scanner или editItem в макете.

+1

вот и все, спасибо! глядя на код, так сильно сделал меня слепым :( – tagz2712

+0

@ tagz2712 сделать перерыв :) – gkiko

3

R.id.scanner и R.id.editItem отсутствуют в вашем файле current_inventory.xml.

Затем, когда вы пытаетесь установитьOnClickListener в (Button), addButton имеет значение null и генерирует исключение NullPointerException.

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