Autore Topic: Problema onActivityResult  (Letto 524 volte)

Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Problema onActivityResult
« il: 13 Novembre 2013, 17:56:46 CET »
0
Salve, proseguendo nello sviluppo della mia app mi sono imbattuto in questo errore al richiamo dell'onActivityResult() dell'activity che chiama un'activity "figlia" (che modifica dei dati e li ripassa al "padre" tramite setResult()):

Metodo che invoca lo startActivityForResult:
Codice (Java): [Seleziona]
btnViewBibite.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View view) {
                // Launching create new product activity
                Intent in = new Intent(getApplicationContext(), AllBibiteActivity.class);
                in.putExtra("mySaveOrder", saveOrder);
                in.putExtra("mySaveDataList", saveData);
                // Transfering saveOrder parameter
                btnViewBibite.setText("Modifica Lista Bibite");
                startActivityForResult(in, 200);
            }
        });

metodo che setta la setResult():
Codice (Java): [Seleziona]
@Override
            public void onClick(View view) {
                // Launching All products Activity
                ListView lv = getListView();
                int listLength = lv.getCount();
                               
                        for (int i=0; i<listLength; i++){
                        View vista = lv.getChildAt(i);
                        EditText text = (EditText)vista.findViewById(R.id.editText1);
                        TextView tViewID = (TextView)vista.findViewById(R.id.pid);
                        TextView tViewNome = (TextView)vista.findViewById(R.id.name);
                        String quantita = text.getText().toString();
                        if (quantita.equals("")) quantita="0";
                        if (Integer.parseInt(quantita)>0){
                                String id = tViewID.getText().toString();
                                String nome = tViewNome.getText().toString();
                                saveOrder.addBibita(new Bibita(id, nome, quantita));
                        }
                        }
                        Intent i = getIntent();
                i.putExtra("mySaveOrder", saveOrder);
                setResult(200, i);
            }
        });  

onActivityResult:
Codice (Java): [Seleziona]
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
               
                if(resultCode == 200){
                        saveOrder=(SaveOrderData) data.getExtras().getSerializable("mySaveOrder");
                       
                        lblBibite.setVisibility(View.VISIBLE);
                        // Loading products
                        lvBibiteOrd = (ListView)findViewById(R.id.lvBibiteOrd);
                        ArrayList<HashMap<String, String>> drinks = saveOrder.getMAPBibite_Ord();
                       
                        ListAdapter adapter = new SimpleAdapter(
                        Cooking.this, drinks,
                        R.layout.list_item_order, new String[] { "idBibita",
                                "nome", "quantita"},
                        new int[] { R.id.pid, R.id.name, R.id.quantity });
                // updating listview
                        lvBibiteOrd.setAdapter(adapter);
                }
                else{
                        if(resultCode==100){
                                Log.d("ResultCode", String.valueOf(resultCode));
                        }
                }

    }    


Il LogCat mi dà questo errore:

11-13 17:39:31.169: W/dalvikvm(16066): threadid=1: thread exiting with uncaught exception (group=0x40c3f1f8)
11-13 17:39:31.169: E/AndroidRuntime(16066): FATAL EXCEPTION: main
11-13 17:39:31.169: E/AndroidRuntime(16066): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=200, result=200, data=Intent { cmp=xxxx (has extras) }} to activity {it.paradiso_giuseppe.cooking/it.paradiso_giuseppe.cooking.Cooking}: java.lang.NullPointerException
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2992)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3035)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread.access$1100(ActivityThread.java:127)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1189)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.os.Looper.loop(Looper.java:137)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread.main(ActivityThread.java:4507)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at java.lang.reflect.Method.invokeNative(Native Method)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at java.lang.reflect.Method.invoke(Method.java:511)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at dalvik.system.NativeStart.main(Native Method)
11-13 17:39:31.169: E/AndroidRuntime(16066): Caused by: java.lang.NullPointerException
11-13 17:39:31.169: E/AndroidRuntime(16066):    at it.paradiso_giuseppe.cooking.SaveOrderData.getMAPBibite_Ord(SaveOrderData.java:68)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at it.paradiso_giuseppe.cooking.Cooking.onActivityResult(Cooking.java:192)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.Activity.dispatchActivityResult(Activity.java:4653)
11-13 17:39:31.169: E/AndroidRuntime(16066):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2988)
11-13 17:39:31.169: E/AndroidRuntime(16066):    ... 11 more



Non riesco a capire perché non restituisca nulla  o_O

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:Problema onActivityResult
« Risposta #1 il: 13 Novembre 2013, 19:20:10 CET »
0
Citazione
11-13 17:39:31.169: E/AndroidRuntime(16066): Caused by: java.lang.NullPointerException
11-13 17:39:31.169: E/AndroidRuntime(16066):    at it.paradiso_giuseppe.cooking.SaveOrderData.getMAPBibite_Ord(SaveOrderData.java:68)

Cosa c'è alla riga 68 di SaveOrderData.java che può essere NULL ?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Re:Problema onActivityResult
« Risposta #2 il: 13 Novembre 2013, 19:40:53 CET »
0
Sono un idiota che lavora da 10 ore di fila che non si è accorto di non aver istanziato l'ArrayList di Hashmap della SaveOrderData-.-
Ora mi ritorna solo il primo elemento della lista, ma sarà problema di algoritmo che risolverò domani.
Come si suol dire, "4 occhi sono meglio di due". Grazie mille Bradipo ;)

Post Risolto