Autore Topic: Arresti anomali  (Letto 458 volte)

Offline angelo1977

  • Utente junior
  • **
  • Post: 59
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexsus
  • Sistema operativo:
    window 7 e ubuntu
Arresti anomali
« il: 23 Luglio 2015, 15:00:33 CEST »
0
Buon di a tutti.
Ho un arresto anomalo su un deviace come posso risolvere su altri deviace tutto ok

Codice (XML): [Seleziona]
java.lang.RuntimeException: Unable to resume activity {com.lemieapp.trasformatori/com.lemieapp.trasformatori.TrasformatoreActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=1, data=Intent { (has extras) }} to activity {com.lemieapp.trasformatori/com.lemieapp.trasformatori.TrasformatoreActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2621)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2649)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
at android.app.ActivityThread.access$700(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=1, data=Intent { (has extras) }} to activity {com.lemieapp.trasformatori/com.lemieapp.trasformatori.TrasformatoreActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3187)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2608)
... 12 more
Caused by: java.lang.NullPointerException
at com.lemieapp.trasformatori.TrasformatoreActivity.onActivityResult(Unknown Source)
at android.app.Activity.dispatchActivityResult(Activity.java:5231)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3183)
... 13 more

Questo è l'intent ke manda indietro i dati
Codice (Java): [Seleziona]
Intent intent = new Intent();
                String pkg = getPackageName();
                Bundle bundle = new Bundle ();
            bundle.putString(".testo", testoBottoneCalcolo);
            //String reset = "1.04";
                //bundle.putString(".CoefKd", reset );

                intent.putExtras(bundle);
                intent.putExtra(pkg + ".nuovoLami", nuovoLami);
                setResult(MODIFICA, intent);
                finish();

qui onActivityResult ke riceve il dati
Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 1) {
                Bundle bundle = data.getExtras();          
            String cambia = bundle.getString(".testo");
           // String coefKd = bundle.getString(".CoefKd");
            testoBottoneCalcolo.setText (cambia);
            //trasfo.setCoefK("1.02");
                String pkg = getPackageName();
                lami = (Lamierino) data.getSerializableExtra(pkg + ".nuovoLami");
               
        } if (resultCode == 2) {
                String pkg = getPackageName();
                trasfo = (Trasformatore) data.getSerializableExtra(pkg + ".nuovoTrasfo");
               

                }
                }

come detto su altri deviace tutto ok

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Arresti anomali
« Risposta #1 il: 23 Luglio 2015, 16:11:52 CEST »
0
Un problema generico del tuo codice è che non controlli la validità degli oggetti che usi. Dai per scontato che data sia valido, ma potrebbe essere NULL e se lo fosse causerebbe quell'exception.

Quindi, come prima cosa aggiungerei al codice questi controlli (verifica che data sia non-null prima di richiamare un suo metodo, stessa cosa per bundle). Questo come buona normal di programmazione, che nel tuo caso almeno evita alla tua applicazione di fare un "crash" esteticamente brutto per l'utente finale.

Rimane da capire comunque la causa dell'errore, ma intanto sistema il crash.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline angelo1977

  • Utente junior
  • **
  • Post: 59
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexsus
  • Sistema operativo:
    window 7 e ubuntu
Re:Arresti anomali
« Risposta #2 il: 23 Luglio 2015, 21:01:40 CEST »
0
Qualcosa di simile
Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 1) {
                if (data != null) {
                        Bundle bundle = data.getExtras();
                        String cambia = bundle.getString(".testo");
                        // String coefKd = bundle.getString(".CoefKd");
                        testoBottoneCalcolo.setText(cambia);
                        //trasfo.setCoefK("1.02");
                        String pkg = getPackageName();
                        lami = (Lamierino) data.getSerializableExtra(pkg + ".nuovoLami");

                }
                if (resultCode == 2) {
                        if (data != null) {
                        String pkg = getPackageName();
                        trasfo = (Trasformatore) data.getSerializableExtra(pkg + ".nuovoTrasfo");


                }
        }
}
}

oppure usare un try catch per gestire l'eccezione ,premetto che sono ai primi passi di programmazione e tutto quello che sto imparando lo devo a persone come te ,che danno consigli infatti io non so bene come gestire la cosa


Offline tonno16

  • Utente storico
  • *****
  • Post: 1200
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Arresti anomali
« Risposta #3 il: 23 Luglio 2015, 21:13:48 CEST »
0
Mi intromettono. Se io ho un meccanismo dove sono sicuro al 100% che la mia variabile non sia mai nullo, potrebbe comunque per problemi legati a java diventare null?

Offline angelo1977

  • Utente junior
  • **
  • Post: 59
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexsus
  • Sistema operativo:
    window 7 e ubuntu
Re:Arresti anomali
« Risposta #4 il: 23 Luglio 2015, 22:19:07 CEST »
0
Forse è piu giusto cosi

Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == RESULT_OK) {
                        if (requestCode == 1) {
                                Bundle bundle = data.getExtras();
                                String cambia = bundle.getString(".testo");
                                // String coefKd = bundle.getString(".CoefKd");
                                testoBottoneCalcolo.setText(cambia);
                                //trasfo.setCoefK("1.02");
                                String pkg = getPackageName();
                                lami = (Lamierino) data.getSerializableExtra(pkg + ".nuovoLami");

                        }
                        if (requestCode == 2) {
                                String pkg = getPackageName();
                                trasfo = (Trasformatore) data.getSerializableExtra(pkg + ".nuovoTrasfo");

                        }

                }
        }

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Arresti anomali
« Risposta #5 il: 24 Luglio 2015, 11:17:11 CEST »
+1
Mi intromettono. Se io ho un meccanismo dove sono sicuro al 100% che la mia variabile non sia mai nullo, potrebbe comunque per problemi legati a java diventare null?

Secondo me: se sei tu stesso a creare l'oggetto, secondo me sei ragionevolmente sicuro che non sia null. Se invece ricevi l'oggetto, oppure codice esterno manipola il tuo oggetto, io faccio sempre il test per il null. C'è anche un'altra casistica tipica di android, faccio l'esempio: crei un oggetto che risiede dentro l'oggetto Application, in teoria dovresti essere sicuro della sua esistenza per tutto il ciclo di vita dell'app, eppure ho letto articoli in cui dicono di non darlo per scontato.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline angelo1977

  • Utente junior
  • **
  • Post: 59
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexsus
  • Sistema operativo:
    window 7 e ubuntu
Re:Arresti anomali
« Risposta #6 il: 25 Luglio 2015, 00:11:27 CEST »
0
Secondo me: se sei tu stesso a creare l'oggetto, secondo me sei ragionevolmente sicuro che non sia null. Se invece ricevi l'oggetto, oppure codice esterno manipola il tuo oggetto, io faccio sempre il test per il null. C'è anche un'altra casistica tipica di android, faccio l'esempio: crei un oggetto che risiede dentro l'oggetto Application, in teoria dovresti essere sicuro della sua esistenza per tutto il ciclo di vita dell'app, eppure ho letto articoli in cui dicono di non darlo per scontato.

l'oggetto è un mio oggetto,per farmi capire A chiama B,e poi B restituisce gli editex ,B ha i controlli se gli editex, se sono vuoti esce un popup di avviso ,e come se A non fosse in onResume

come detto all'inizio ho l'errore solo su un terminale pervenutomi da gli arresti anomali del app