мое приложение зависает при нажатии кнопки отправки - PullRequest
0 голосов
/ 10 марта 2019

У меня проблема с моим Java-классом, когда я устанавливаю свое приложение, попробуйте заполнить форму и нажать кнопку подтверждения, она вылетает и выдает мне эту ошибку в 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класс имеет текстовый редактор 2 счетчика кнопка сохранения и консультации

DatabaseHelper myDb;EditText editText6, editText7, editText8, editText9, editText10, editText11, editText12, editText13, editText14, editText15;Spinner 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 Ответ

1 голос
/ 10 марта 2019

Возможно, вы забыли инициализировать переменную myDb.

В строке 80 вы пытаетесь вызвать метод для null объекта.По этой причине было выброшено NullPointerException.

Перед использованием myDb вы должны инициализировать это (с некоторым значением).Например, вы можете сделать это в onCreate():

myDb = new DatabaseHelper(this);

, где this равно context.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...