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);
Вы уверены, что '' spinner01' и spinner01 'Spinner находится в макете' activity_main'? –
ваше право, я переключил свои действия, добавив активность дома, поэтому я должен был изменить activity_main на activity_add и никогда не менял его ... так глупо! спасибо, ослепленный, глядя на него. – ERN