Autore Topic: passaggio dati e query  (Letto 628 volte)

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
passaggio dati e query
« il: 26 Marzo 2011, 17:40:47 CET »
0
Ragazzi sto realizzando un esempio di applicazione che mi inserisce una materia. questo è il codice che chiama l'activity di modifica e creazione:
Codice (Java): [Seleziona]
case CREA_MATERIA:
                        // creo l'Intent per activity materie
                        Intent createIntentMaterie = new Intent(this, ModificaMateriaActivity.class);
                        startActivityForResult(createIntentMaterie, CREATE_ACTIVITY_MATERIA_RESULT);
                        return true;


questo è invece il codice dell'activity di modifica:


Codice (Java): [Seleziona]
public boolean onOptionsItemSelected(MenuItem item) {
               
                int itemId = item.getItemId();
                if (itemId == SAVE_MENU_OPTION) {
                       
                       
                       
                        Intent dataMateria = new Intent();
                        Bundle materiaBundle = new Bundle();
                        materia.nome = materiaEdit.getText().toString();
                        materia.tipo_crediti = tipoEdit.getText().toString();
                        int temp=Integer.parseInt( num_creditiEdit.getText().toString() );
                        materia.num_crediti = temp;
                       
                        materiaBundle.putParcelable("materiaParcelable", materia);
                        dataMateria.putExtra("materiaBundle", materiaBundle);
                        setResult(Activity.RESULT_OK, dataMateria);
       
                        finish();
                       
                        return true;
                } else if (itemId == CANCEL_MENU_OPTION) {
                       
                        finish();
               
                        return true;
                } else {
                       
                        return super.onOptionsItemSelected(item);
                }
        }

questo il codice della pagina che chiama l'activity di modifica:

Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==CREATE_ACTIVITY_MATERIA_RESULT || requestCode==UPDATE_ACTIVITY_MATERIA_RESULT){
       
                        String ap=String.valueOf(Activity.RESULT_OK);
                        Log.v("ci passo" ,ap);
                        switch (resultCode) {
                                case Activity.RESULT_OK:
                               
                                        Bundle extra = data.getBundleExtra("materiaBundle");
                                        Materia materia = (Materia) extra.getParcelable("materiaParcelable");
               
                                        ContentValues values = new ContentValues();
                                        values.put(MateriaMetaData.NOME, materia.nome);
                                       
                                       
                                        values.put(MateriaMetaData.TIPO_CREDITI, materia.tipo_crediti);
                                        values.put(MateriaMetaData.NUM_CREDITI, materia.num_crediti);
               


                                       
                                        db = dbHelper.getWritableDatabase();
                                        // A seconda del tipo di risposta facciamo un inserimento o un
                                        // update
                                       
                                        switch (requestCode) {
                                        case CREATE_ACTIVITY_MATERIA_RESULT:
                                                db.insert("MATERIE", null, values);
                                                break;
                                        case UPDATE_ACTIVITY_MATERIA_RESULT:
                                                db.update("MATERIE", values, "codice="+materia., null);
                                                break;
                                        default:
                                                break;
                                        }
                                default:
                                break;
                        }
                }
                //fine caso in cui creo o aggiorno una materia
               
               
        }



mancano sicuramente dei pezzi ma l'errore che mi da è questo:



03-26 13:59:57.265: ERROR/AndroidRuntime(597): java.lang.RuntimeException:
Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { (has extras) }} to activity
{studenti_database.prova/studenti_database.prova.studenti_databaseActivity}: java.lang.NullPointerException:
println needs a message






« Ultima modifica: 20 Aprile 2011, 12:21:37 CEST da 7h38ugg3r »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:passaggio dati e query
« Risposta #1 il: 20 Aprile 2011, 12:24:49 CEST »
0
il log non è molto esplicativo, dovresti mettere più righe, comunque:

Codice (Java): [Seleziona]
materiaBundle.putParcelable("materiaParcelable", materia);
dataMateria.putExtra("materiaBundle", materiaBundle);

è errato concettualmente. Stai mettendo un bundle come extra....quando ti prendi questo extra, devi considerare che è un bundle, e quindi riprenderti l'extra che ti interessa....
dovresti fare così:
Codice (Java): [Seleziona]
dataMateria.putExtra("materiaParcelable", materia);
e in fase di get, al posto di:
Codice (Java): [Seleziona]
Bundle extra = data.getBundleExtra("materiaBundle");
Materia materia = (Materia) extra.getParcelable("materiaParcelable");

devi mettere:
Codice (Java): [Seleziona]
Materia materia = (Materia) data.getParcelable("materiaParcelable");
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
Re:passaggio dati e query
« Risposta #2 il: 20 Aprile 2011, 12:41:09 CEST »
0
guarda io ho appena provato ma non va.. piu tardi ho piu tempo e vedo di provare meglio.. cmq se hai un po di tempo ti chiedo di dare uno sguardo al progetto.. è lo stesso errore, entrambi i post parlano della stesa cosa .
Ciao grazie! :D

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
Re:passaggio dati e query
« Risposta #3 il: 20 Aprile 2011, 15:32:33 CEST »
0
dimenticavo, quando torno all'activity che legge i dati, dopo aver fatto la get i miei dati vengono letti ma non correttamente, il nome della materia è corretto, il tipo e il numero dei crediti invece no..

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:passaggio dati e query
« Risposta #4 il: 20 Aprile 2011, 15:36:45 CEST »
+1
Hai implementato correttamente l'interfaccia Parcelable?
Devi leggere i dati nell'ordine inverso rispetto al quale li hai scritti.

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
Re:passaggio dati e query
« Risposta #5 il: 20 Aprile 2011, 15:45:21 CEST »
0
credo di si.. se vuoi controllare ho postato il  codice dell'intero progetto qui:
Passaggio parametri tra activity - Android Developers Italia

ti prego di darmi una mano perche non riesco a capire dove sbaglio..
attendo una tua risposta e grazie

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
Re:passaggio dati e query
« Risposta #6 il: 20 Aprile 2011, 15:51:16 CEST »
0
ho appena controllato.. avevi ragione.. non lo sapevo!!! grande!! sei un fenomeno. mi potresti spiegare bene il fatto dell'ordine?
se devo essere sincero non mi è ben chiaro il bundle e il parcelable.. cmq grazie 1000!!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:passaggio dati e query
« Risposta #7 il: 20 Aprile 2011, 15:53:47 CEST »
0
Non c'è da essere fenomeni, basta solo leggere la documentazione. ;)