为什么当我打开此活动时,我的应用程序停止了,但是当我删除ArrayList
和adpater时,它却起作用了并且没有停止吗?
错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mypos, PID: 14010
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mypos/com.example.mypos.EditPage}: 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:2706)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2788)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1536)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5867)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
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.mypos.EditPage.onCreate(EditPage.java:50)
at android.app.Activity.performCreate(Activity.java:6309)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2653)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2788)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1536)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5867)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
I/Process: Sending signal. PID: 14010 SIG: 9
Application terminated.
和代码:
List<String>List = new ArrayList<>();
List.add("Food");
List.add("Drink");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, List);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
public void AddProduct(){
btnAddproduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = NAME.getText().toString().trim();
String price = PRICE.getText().toString().trim();
String itemvalue = spinner.getSelectedItem().toString();
if (NAME .length() !=0 && PRICE.length() !=0){
if (itemvalue == "Food"){
boolean AddFoods = FOODsDB.addDataFoods(name,price);
if(AddFoods == true){
Toast.makeText(EditPage.this, " Food Added", Toast.LENGTH_LONG).show();
}else { Toast.makeText(EditPage.this, " Something Went Wrong", Toast.LENGTH_LONG).show();}
}else{}
if (itemvalue == "Drinks"){
boolean AddDrinks = FOODsDB.addDataDrinks(name,price);
if(AddDrinks == true){
Toast.makeText(EditPage.this, " Drinks Added", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(EditPage.this, " Something Went Wrong", Toast.LENGTH_LONG).show(); }
} else {
Toast.makeText(EditPage.this, " Please Fill up All the text field", Toast.LENGTH_LONG).show();
}
}
}
});
}
public void DeleteData(){
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = ID.getText().toString().length();
String itemvalue = spinner.getSelectedItem().toString();
if (temp > 0)
{
if(itemvalue == "Food"){
Integer deleteFood = FOODsDB.deleteFood(ID.getText().toString());
if(deleteFood > 0){
Toast.makeText(EditPage.this," Successfully Deleted Food :(",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(EditPage.this," Something Went Wrong :(",Toast.LENGTH_LONG).show();
}
} else{}
if(itemvalue == "Drinks"){
Integer deleteFood = FOODsDB.deleteDrinks(ID.getText().toString());
if(deleteFood > 0){
Toast.makeText(EditPage.this," Successfully Deleted Drink ",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(EditPage.this," Something Went Wrong :(",Toast.LENGTH_LONG).show();
}
} else{}
}
else{
Toast.makeText(EditPage.this," Please Input an ID",Toast.LENGTH_LONG).show();
}
}
});
}
public void UpdateData(){
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = ID.getText().toString().length();
String itemvalue = spinner.getSelectedItem().toString();
if (temp > 0 ){
if(itemvalue == "Food"){
boolean update = FOODsDB.updateData(ID.getText().toString(), NAME.getText().toString(),PRICE.getText().toString());
if (update == true){
Toast.makeText(EditPage.this," Successfully Updated Food",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(EditPage.this," Something Went Wrong :(",Toast.LENGTH_LONG).show();
}
}else{}
}else{
Toast.makeText(EditPage.this," Please Input an ID",Toast.LENGTH_LONG).show();
}
}
})
}
答案 0 :(得分:0)
如日志所述,您的spinner
为空。这意味着您没有正确初始化/分配
答案 1 :(得分:0)
当我们尚未初始化视图时初始化此微调器,请先在其中设置适配器。在使用任何视图之前,我们需要使用findViewById()
喜欢这个:
Spinner spinner;
//add this line in code
spinner=findViewById(R.id.spinner);
List<String>List = new ArrayList<>();
List.add("Food");
List.add("Drink");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, List);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);