单击提交按钮时我的应用程序崩溃

时间:2019-03-10 13:18:30

标签: android database

当我安装我的应用程序时,我的java类出现问题,尝试填写表格并单击Submit按钮,它崩溃并在android studio中给我这个错误

Process: com.example.myapplication, PID: 29537
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.example.myapplication.DatabaseHelper.addData()' on a null object reference
    at com.example.myapplication.cet_cet.addData(cet_cet.java:80)
    at com.example.myapplication.cet_cet$2.onClick(cet_cet.java:72)
    at android.view.View.performClick(View.java:6897)
    at android.widget.TextView.performClick(TextView.java:12693)
    at android.view.View$PerformClick.run(View.java:26100)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

这是我的cet_cet Java类,它具有edittext 2个微调器,带有一个“保存并查询”按钮

  

DatabaseHelper myDb;       EditText editText6,editText7,editText8,editText9,editText10,editText11,editText12,editText13,editText14,editText15;       旋转器spinner,spinner2;       按钮button13,button14;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cet_cet);


    editText6 = findViewById(R.id.editText6);
    editText7 =  findViewById(R.id.editText7);
    editText8 =  findViewById(R.id.editText8);
    editText9 =  findViewById(R.id.editText9);
    editText10 =  findViewById(R.id.editText10);
    spinner = findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.intallation_traitement, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    editText11 = findViewById(R.id.editText11);
    editText12 = findViewById(R.id.editText12);
    editText13 = findViewById(R.id.editText13);
    editText14 = findViewById(R.id.editText14);
    spinner2 = findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this,R.array.oui_non, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter1);
    editText15 = findViewById(R.id.editText15);
    button13 = findViewById(R.id.button13);
    button14 = findViewById(R.id.button14);


    button14.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Intent intent = new Intent(cet_cet.this,cet_cet_consult.class);
           startActivity(intent);
       }
   });

    button13.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String nom = editText6.getText().toString();
            String adresse = editText7.getText().toString();
            String date = editText8.getText().toString();
            String duree = editText9.getText().toString();
            String superficie = editText10.getText().toString();
            String etat = spinner.getSelectedItem().toString();
            String communedesservies = editText11.getText().toString();
            String cout = editText12.getText().toString();
            String nbcasierop = editText13.getText().toString();
            String nbcasierencours = editText14.getText().toString();
            String systemelixiviat = spinner2.getSelectedItem().toString();
            String nbbassins = editText15.getText().toString();
            addData(nom,adresse,date,duree,superficie,etat, communedesservies, cout, nbcasierop, nbcasierencours, systemelixiviat, nbbassins);

        }

    });
}

public void addData(String nom,String adresse,String date,String duree,String superficie,String etat,String communedesservies,String cout,String nbcasierop, String nbcasierencours,String systemelixiviat,String nbbassins) {
    boolean insertData = myDb.addData(nom,adresse,date,duree,superficie,etat,communedesservies,cout,nbcasierop,nbcasierencours,systemelixiviat,nbbassins);
     if(insertData==true){
         Toast.makeText(cet_cet.this,"Enregistrement effectué",Toast.LENGTH_LONG).show();
     }else {
         Toast.makeText(cet_cet.this,"Veuillez réessayer",Toast.LENGTH_LONG).show();
     }`

我尝试了所有我找不到我做错的事情,它说错误在'addData'

1 个答案:

答案 0 :(得分:1)

您可能忘记了初始化变量myDb

80行中,您尝试在null对象上调用方法。这就是抛出NullPointerException的原因。

在使用myDb之前,您必须初始化它(使用一些值)。例如,您可以在onCreate()中进行此操作:

myDb = new DatabaseHelper(this);

其中thiscontext

相关问题