Android 为什么在打开活动时应用程序会停止
为什么当我打开此活动时,我的应用程序会停止,但当我删除Android 为什么在打开活动时应用程序会停止,android,Android,为什么当我打开此活动时,我的应用程序会停止,但当我删除ArrayList和adpeter时,它会工作并且不会停止 错误: 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
ArrayList
和adpeter时,它会工作并且不会停止
错误:
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();
}
}
})
}
ListList=newarraylist();
列表。添加(“食品”);
列表。添加(“饮料”);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u微调器项目,列表);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
公共产品(){
btnAddproduct.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
String name=name.getText().toString().trim();
字符串price=price.getText().toString().trim();
String itemvalue=spinner.getSelectedItem().toString();
如果(NAME.length()!=0&&PRICE.length()!=0){
如果(itemvalue==“食品”){
布尔AddFoods=FOODsDB.addDataFoods(名称、价格);
if(AddFoods==true){
Toast.makeText(EditPage.this,“添加食物”,Toast.LENGTH_LONG.show();
}else{Toast.makeText(EditPage.this,“出错了”,Toast.LENGTH_LONG.show();}
}else{}
如果(itemvalue==“饮料”){
boolean AddDrinks=FOODsDB.addDataDrinks(名称、价格);
如果(addDiverses==true){
Toast.makeText(EditPage.this,“添加饮料”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(EditPage.this,“出错”,Toast.LENGTH_LONG.show();}
}否则{
Toast.makeText(EditPage.this,“请填写所有文本字段”,Toast.LENGTH_LONG.show();
}
}
}
});
}
公共void DeleteData(){
btnDelete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int temp=ID.getText().toString().length();
String itemvalue=spinner.getSelectedItem().toString();
如果(温度>0)
{
如果(itemvalue==“食品”){
整数deleteFood=FOODsDB.deleteFood(ID.getText().toString());
如果(删除食物>0){
Toast.makeText(EditPage.this,“已成功删除食物:(”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(EditPage.this,“出错:(”,Toast.LENGTH_LONG.show();
}
}else{}
如果(itemvalue==“饮料”){
整数deleteFood=FOODsDB.deleteDrinks(ID.getText().toString());
如果(删除食物>0){
Toast.makeText(EditPage.this,“已成功删除饮料”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(EditPage.this,“出错:(”,Toast.LENGTH_LONG.show();
}
}else{}
}
否则{
Toast.makeText(EditPage.this,“请输入ID”,Toast.LENGTH_LONG.show();
}
}
});
}
公共void UpdateData(){
btnUpdate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int temp=ID.getText().toString().length();
String itemvalue=spinner.getSelectedItem().toString();
如果(温度>0){
如果(itemvalue==“食品”){
boolean update=FOODsDB.updateData(ID.getText().toString(),NAME.getText().toString(),PRICE.getText().toString());
如果(更新==true){
Toast.makeText(EditPage.this,“成功更新食物”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(EditPage.this,“出错:(”,Toast.LENGTH_LONG.show();
}
}else{}
}否则{
Toast.makeText(EditPage.this,“请输入ID”,Toast.LENGTH_LONG.show();
}
}
})
}
正如日志所述,您的微调器是空的。这意味着您没有正确地初始化/分配它。当我们没有初始化视图时,会发生此错误。在设置适配器之前初始化微调器。在使用任何视图之前,我们需要使用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);
微调器微调器;
//在代码中添加此行
微调器=findViewById(R.id.spinner);
ListList=新的ArrayList();
列表。添加(“食品”);
列表。添加(“饮料”);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u微调器项目,列表);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
Hey@potpoop,考虑到您添加的代码,很难知道,特别是因为它缺少活动的全部内容和布局文件。如果您能够组合一个最小的、可复制的示例(),您可能会得到更有利的响应。