Erreur introuvable

Résolu/Fermé
lukas6410 Messages postés 25 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 19 mai 2021 - 25 mars 2020 à 09:41
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 25 mars 2020 à 11:32
Bonjour,
j,ai un java.lang.Runtime et un java.NullPointerExeption je précise que je vois à quoi ça correspond
mais je ne trouve pas l'erreur dans le code je vous le donne ainsi que la console debug pourriez vous m'aider merci.

package com.example.mycontact;

import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;

import java.io.File;


public class Register_Activity extends AppCompatActivity {
    private String nom_enter;
    private int compteur_verif=0;
    private EditText editText;



    private String prenom_enter;
    private String num_enter;
    private String adress_enter;
    private EditText nom ;
    private EditText prenom ;
    private EditText num ;
    private EditText adress;
    private Button valider;
    private static final String FILENAME = "mescontacts.txt";
    private static final String FOLDERNAME = "mescontacts";
    private static final int RC_STORAGE_WRITE_PERMS = 100;


    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newcontact);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            this.readFromStorage();
        }


        nom=(EditText)findViewById(R.id.nom_enter);
        prenom=(EditText)findViewById(R.id.prenom_enter);
        num=(EditText)findViewById(R.id.num_enter);
        adress=(EditText)findViewById(R.id.adress_enter);
        valider=(Button)findViewById(R.id.button);
        num.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                valider.setEnabled(true);
            }

            @Override
            public void afterTextChanged(Editable s) {
                nom_enter=num.getText().toString();
            }
        });
        nom.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                valider.setEnabled(true);
            }

            @Override
            public void afterTextChanged(Editable s) {
                prenom_enter=prenom.getText().toString();
            }
        });

        valider.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adress_enter=adress.getText().toString();
                if (num.length() != 10){
                    valider.setEnabled(false);
                    Toast.makeText(getApplicationContext(),"le numéro n'est pas valide",Toast.LENGTH_LONG).show();

                }
                if(nom.length() <= 0){
                    valider.setEnabled(false);
                    Toast.makeText(getApplicationContext(),"vous avez oublier le nom",Toast.LENGTH_LONG).show();
                }
                else{
                    ++compteur_verif;
                }}
        });

    }
     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
     private void save(){
        if(compteur_verif==1){
            this.writeOnExternalStorage();
        }
     }
     @RequiresApi(api = Build.VERSION_CODES.KITKAT)

     private void readFromStorage(){
        if(StorageUtils.isExternalStorageReadable()){
            this.num.setText
                    (StorageUtils.getTextFromStorage(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME));

        }
     }
     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
     private void writeOnExternalStorage(){
        if (StorageUtils.isExternalStorageWritable()){
            StorageUtils.setTextInStorage
                    (Environment.getExternalStoragePublicDirectory
                            (Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME,this.num.getText().toString());
        }else{
            Toast.makeText(this,getString(R.string.external_storage_impossible_create_file),Toast.LENGTH_LONG).show();
        }
     }
}


et la console debug:


E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mycontact, PID: 20324
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mycontact/com.example.mycontact.Register_Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
25 mars 2020 à 10:39
Trouvé ! ;)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    this.readFromStorage();
} 


Tu le fais trop tôt. Tu devrais le faire après avoir récupérer tes composants graphiques puisque, dans la méthode, tu set le texte d'un EditText
0
lukas6410 Messages postés 25 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 19 mai 2021 4
25 mars 2020 à 10:40
je vais essayer je te donne des nouvelle ,merci
0
lukas6410 Messages postés 25 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 19 mai 2021 4
25 mars 2020 à 11:11
merci cette erreur est resolue mais je n'arrive pas à écrire le fichier sur mon android avec la méthode save(),qui s'execut car j,ai changé mon code et fais en sorte de mettre un toast pour verifier
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895 > lukas6410 Messages postés 25 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 19 mai 2021
25 mars 2020 à 11:32
C'est un autre problème, donc autre sujet pour ne pas polluer le forum ;)
Et si celui-ci est résolu, merci de l'indiquer
0