Partage
  • Partager sur Facebook
  • Partager sur Twitter

Crash en implémentant une listView...

attempt methode virtuelle sur un objet nul...

    21 octobre 2020 à 20:24:44

    Bonjour à tous et merci pour votre temps :-)

    Je suis sur android studio, j'ai développé une activité qui se charge du bluetooth .. celui ci présente deux boutons l'un qui se charge d'activer et de désactiver le bluetooth et l'autre de scanner les appareilles bluetooth à proximité. Lors du scan j'ai une erreur qui survient seulement lorsque j'utilise une listeView. 

    le code compile normalement, l'application tourne bien jusqu'au déclenchage du scan 

    L'erreur qui survient dans les Logcats...   

    Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

    2020-10-21 20:05:22.844 27975-27975/com.example.kartouche E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.kartouche, PID: 27975
        java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:453)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:415)
            at android.widget.AbsListView.obtainView(AbsListView.java:2408)
            at android.widget.ListView.measureHeightOfChildren(ListView.java:1482)
            at android.widget.ListView.onMeasure(ListView.java:1389)
            at android.view.View.measure(View.java:23196)
            at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:789)
            at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:467)
            at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:127)
    

    J'essaie de comprendre d'ou survient cette erreur mais elle provient de la classe propre arrayAdapter .. 

    // Ceci en général dans la classe..
    ArrayList<String> stringArrayList = new ArrayList<String>();    
    ArrayAdapter<String> arrayAdapter;
    
    
    // Ceci dans la méthode onCreate
    arrayAdapter = new ArrayAdapter<String(getApplicationContext(),android.R.layout.simple_list_item_1,stringArrayList);
    p_list_device.setAdapter(arrayAdapter);
    
    // Ceci dans le callback BroadcastReceiver
    
        private final BroadcastReceiver receiver = new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
    
    
                Log.i("[MESSAGE INFORMATION]","");
    
                if (BluetoothDevice.ACTION_FOUND.equals(action))
                {
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    String deviceName = device.getName();
                    String deviceHardwareAddress = device.getAddress(); // MAC address
                    Log.i("[MESSAGE INFORMATION]","APPAREIL DECOUVERT"+ deviceName );
    
                    stringArrayList.add(deviceName);
                    arrayAdapter.notifyDataSetChanged();
                }
    
            }
        };// BroadcastReceiver

    Si besoin du code entier n'hésitez pas à me le demander :-) 

    merci d'avance!! :-) 

    -
    Edité par AbcAbc6 21 octobre 2020 à 20:38:47

    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2020 à 10:44:06

      Salut. Je suis pas un expert Android mais j’ai l’impression que le crash est sur la ligne 24. DeviceName serait null. 

      Ca te dit pas de faire du Kotlin plutôt ? :D 

      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2020 à 18:12:29

        Geda a écrit:

        Salut. Je suis pas un expert Android mais j’ai l’impression que le crash est sur la ligne 24. DeviceName serait null. 

        Ca te dit pas de faire du Kotlin plutôt ? :D 


        Salut Geda et merci! ;) 

        L'erreur venait bel et bien d'ici, je ne mettais pas rendu compte du surlignent qui présentait ce warning d'ou le crash lorsque la methode retournait un nullPointerExeption

        Method invocation 'getName' may produce 'NullPointerException' 

        J'ai pu corriger cela en apportant ces modifications, tester la valeur de la méthode avec de l'utiliser,

        Puisse cela aider quelqu'un :-)

          if(device.getName() != null)
                            {
                                String deviceName = device.getName();
                                stringArrayList.add(deviceName);
                            }
                        if(device.getAddress() != null)
                            {
                                String deviceHardwareAddress = device.getAddress(); // MAC address
                            }


        Pour être honnête j'avais déjà quelques notions en Java :-° 



        • Partager sur Facebook
        • Partager sur Twitter

        Crash en implémentant une listView...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown