2015-02-16 4 views
0

Проблемы с моим приложением при попытке использовать класс ниже см. В разделе LogCat и .Java. Любой, кто может объяснить и диагностировать это?Ошибки LogCat, прекращающие запуск приложения - Добавленный код

AddActivity.java

02-16 14:17:52.046 1896-1896/com.example.student.neillapp E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.student.neillapp, PID: 1896 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.student.neillapp/com.example.student.neillapp.AddActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 
      at com.example.student.neillapp.AddActivity.chooseCategory(AddActivity.java:39) 
      at com.example.student.neillapp.AddActivity.onCreate(AddActivity.java:26) 
      at android.app.Activity.performCreate(Activity.java:5933) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Это файл Java, связанный с CatLog

public class AddActivity extends Activity implements OnClickListener, OnItemSelectedListener { 

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

    spinner1 = (Spinner) this.findViewById(R.id.spinner01); 
    spinner2 = (Spinner) this.findViewById(R.id.spinner02); 

    chooseCategory(); 
    chooseBreakfast(); 
    chooseLunch(); 
    chooseDinner(); 
    chooseSnack(); 

} 
static Spinner spinner1, spinner2 = null; 

public void chooseCategory() { 

    ArrayAdapter<CharSequence> catAdapter = ArrayAdapter.createFromResource(this, R.array.foodtype, android.R.layout.simple_spinner_item); 
    catAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(catAdapter); 
    spinner1.setOnItemSelectedListener(new planOnSelectedListener()); 
} 

public void chooseBreakfast() { 

    ArrayAdapter<Food> planAdapter1 = new ArrayAdapter<>(this, 
      android.R.layout.simple_spinner_item, new Food[]{ 
      new Food(1, "Toast"), 
      new Food(99, "Cereal"), 
      new Food(53, "Fruit"), 
      new Food(153, "Yogurt") 
    }); 

    spinner2.setAdapter(planAdapter1); 
    spinner2.setOnItemSelectedListener(this); 
    Button button = (Button) this.findViewById(R.id.button01); 
    button.setOnClickListener(this); 
} 


public void chooseLunch() { 
    ArrayAdapter<Food> planAdapter2 = new ArrayAdapter<>(this, 
      android.R.layout.simple_spinner_item, new Food[]{ 
      new Food(1, "Sandwich"), 
      new Food(99, "Wrap"), 
      new Food(53, "Salad"), 
    }); 

    spinner2.setAdapter(planAdapter2); 
    // Tell the spinner what to do when an item is changed 
    spinner2.setOnItemSelectedListener(this); 
    // Find our button and hook-up the click routine 
    Button button = (Button) this.findViewById(R.id.button01); 
    button.setOnClickListener(this); 
} 

public void chooseDinner() { 
    ArrayAdapter<Food> planAdapter2 = new ArrayAdapter<>(this, 
      android.R.layout.simple_spinner_item, new Food[]{ 
      new Food(1, "Pizza"), 
      new Food(99, "Pasta"), 
      new Food(53, "Fish and Chips"), 
    }); 

    spinner2.setAdapter(planAdapter2); 
    // Tell the spinner what to do when an item is changed 
    spinner2.setOnItemSelectedListener(this); 
    // Find our button and hook-up the click routine 
    Button button = (Button) this.findViewById(R.id.button01); 
    button.setOnClickListener(this); 
} 

public void chooseSnack() { 
    ArrayAdapter<Food> planAdapter2 = new ArrayAdapter<>(this, 
      android.R.layout.simple_spinner_item, new Food[]{ 
      new Food(1, "Crisps"), 
      new Food(99, "Chocolate"), 
      new Food(53, "Donut"), 
    }); 

    spinner2.setAdapter(planAdapter2); 
    // Tell the spinner what to do when an item is changed 
    spinner2.setOnItemSelectedListener(this); 
    // Find our button and hook-up the click routine 
    Button button = (Button) this.findViewById(R.id.button01); 
    button.setOnClickListener(this); 
} 

public void toastState(String prefix, Food cl) { 
    if (cl != null) { 
     String desc = "Event: " + prefix + "\nName: " + cl.name; 
     desc += "\nCalorie: " + String.valueOf(cl.calories); 
     Toast.makeText(getApplicationContext(), desc, Toast.LENGTH_SHORT).show(); 
    } 
} 

public void calorieState (Food cl){ 

     TextView textView3 = (TextView) findViewById(R.id.textView3); 
     textView3.setText(String.valueOf("Item Calories: " + cl.getCalorie())); 

} 

public class planOnSelectedListener implements OnItemSelectedListener { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) { 
     parent.getItemAtPosition(pos); 

     if (pos == 0) { 
      chooseBreakfast(); 
     } else if (pos == 1) { 
      chooseLunch(); 
     } else if (pos == 2) { 
      chooseDinner(); 
     } else if (pos == 3) { 
      chooseSnack(); 
     } 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

    } 
} 


public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    // Get the currently selected State object from the spinner 
    Food st = (Food) spinner2.getSelectedItem(); 

    // Show it via a toast 
    toastState("onItemSelected", st); 
} 

public void onNothingSelected(AdapterView<?> parent) { 
} 


public void onClick(View v){ 
    // Get the currently selected State object from the spinner 
    Food st = (Food) spinner2.getSelectedItem(); 

    // Show it via a toast 
    toastState("onClick", st); 
    calorieState(st); 
+1

Вы уверены, что '' spinner01' и spinner01 'Spinner находится в макете' activity_main'? –

+0

ваше право, я переключил свои действия, добавив активность дома, поэтому я должен был изменить activity_main на activity_add и никогда не менял его ... так глупо! спасибо, ослепленный, глядя на него. – ERN

ответ

0
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

Должно быть

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_add); 
Смежные вопросы