为什么打开活动时我的应用程序停止

时间:2019-10-17 22:29:18

标签: android

为什么当我打开此活动时,我的应用程序停止了,但是当我删除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();
                                }
                            }
                        })
            }

2 个答案:

答案 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);
相关问题