Passare gli extra per l'attività principale da un'altra chiamata

Nell'attività principale ho un button per aggiungere una nuova nota (è una sorta di applicazione appiccicosa per Android):

ArrayAdapter<Note> adapter = (ArrayAdapter<Note>) getListAdapter(); Note note = null; switch (view.getId()) { case R.id.add: // Call AddActivity to specify content of the note fields to be // added to the DB intentToAdd = new Intent(this, AddActivity.class); startActivity(intentToAdd); //get the extras from AddActivity Note newNote = getIntent().getExtras().getParcelable("myNewNote"); String summary = newNote.getSummary(); String details = newNote.getDetails(); // Save the new note in the database note = datasource.createNote(summary, details); adapter.add(note); break; 

Poi ho l' AddActivity (che contiene un module per aggiungere una nuova nota), il suo metodo onCreate è:

  • adb non viene eseguito su Ubuntu 64 - command non trovato
  • Android come get il tema di tipo AppCompat.Translucent con la barra di azione di supporto?
  • Calcolo del numero di numbers mancanti
  • Multiple ViewPagers all'interno di un singolo ListView è in crash
  • Delimitatori variables StringTokenizer
  • Ottenere un text strano con il metodo EditText.toString () nel progetto Android. Perché?
  •  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add); butAdd = (Button) findViewById(R.id.buttonAjout); intentToMain = new Intent(this, MainActivity.class); butAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EditText summary = ((EditText) findViewById(R.id.editTextSum)); EditText details = ((EditText) findViewById(R.id.editTextDet)); Note note =new Note(summary.toString(),details.toString()); intentToMain.putExtra("myNewNote", note); startActivity(intentToMain); } }); } 

    NB: La mia class di nota implementa Classe Parcelable!

    Ecco il mio problema: quando faccio clic sul button di inserimento nell'attività principale, la mia applicazione si blocca ("si arresta inaspettatamente") PERCHE 🙁 ???

    Dimmi se ci sono altre informazioni o codice mancanti … Grazie …

    Il logCat dice che è un nullPointerException:

     04-21 17:00:07.832: D/AndroidRuntime(278): Shutting down VM 04-21 17:00:07.832: W/dalvikvm(278): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 04-21 17:00:07.892: E/AndroidRuntime(278): FATAL EXCEPTION: main 04-21 17:00:07.892: E/AndroidRuntime(278): java.lang.IllegalStateException: Could not execute method of the activity 04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$1.onClick(View.java:2072) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View.performClick(View.java:2408) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$PerformClick.run(View.java:8816) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Handler.handleCallback(Handler.java:587) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:92) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627) 04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method) 04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521) 04-21 17:00:07.892: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-21 17:00:07.892: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-21 17:00:07.892: E/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method) 04-21 17:00:07.892: E/AndroidRuntime(278): Caused by: java.lang.reflect.InvocationTargetException 04-21 17:00:07.892: E/AndroidRuntime(278): at com.insat.notememoiresqlite.MainActivity.onClick(MainActivity.java:69) 04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method) 04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521) 04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$1.onClick(View.java:2067) 04-21 17:00:07.892: E/AndroidRuntime(278): ... 11 more 04-21 17:00:07.892: E/AndroidRuntime(278): Caused by: java.lang.NullPointerException 04-21 17:00:07.892: E/AndroidRuntime(278): ... 15 more 04-21 17:04:37.812: I/Process(278): Sending signal. PID: 278 SIG: 9 

    Penso che sia a causa di queste linee nell'attività principale:

     String summary = newNote.getSummary(); String details = newNote.getDetails(); 

    where cerco di get valori da newNote mentre è nullo Ma perché è nullo?

    ————————————————– ——— Modifica —————————————- ——————-

    Ho provato la soluzione onActivityResult, ma ho ancora una NullPointerException per questa linea:

     Note newNote = getIntent().getExtras().getParcelable("myNewNote"); 

    Ecco il codice: In Main Activity:

     public void onClick(View view) { adapter = (ArrayAdapter<Note>) getListAdapter(); switch (view.getId()) { case R.id.add: // Call AddActivity to specify content of the note fields to be // added to the DB intentToAdd = new Intent(this, AddActivity.class); startActivityForResult(intentToAdd, 0); break; 

    poi:

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub Log.i("aaaaa", "Dans le onActivityResult "); if (resultCode == RESULT_OK) { Log.i("aaaaa", "RESULT_OK "); // get the extras from AddActivity Note newNote = getIntent().getExtras().getParcelable("myNewNote"); if (newNote != null) { String summary = newNote.getSummary(); String details = newNote.getDetails(); // Save the new note in the database note = datasource.createNote(summary, details); adapter.add(note); } else { Log.i("aaaaa", "newNote est null !!!!!!!! "); } } else { Log.i("aaaaa", "RESULT_PAS OK "); } } 

    e nell'AdActivity:

     super.onCreate(savedInstanceState); setContentView(R.layout.activity_add); Log.i("aaaaa", "Dans le onCreate de AddActivity"); butAdd = (Button) findViewById(R.id.buttonAjout); intentToMain = new Intent(this, MainActivity.class); butAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("aaaaa", "Dans le onClick du bouton ajout"); EditText summary = ((EditText) findViewById(R.id.editTextSum)); EditText details = ((EditText) findViewById(R.id.editTextDet)); Note note =new Note(summary.toString(),details.toString()); intentToMain.putExtra("myNewNote", note); setResult(RESULT_OK); finish(); } }); 

  • Android: Qual è la differenza tra setFlags e addFlags per intenti
  • AlphaAnimation non funziona
  • È ansible accedere ai valori definiti in MANIFEST.MF in modo programmato?
  • È supportto l'impronta digitale nei dispositivi Android?
  • Come effettuare query ricorsive in SQLite?
  • Android: Come visualizzare la galleria di immagini selezionata in ImageView?
  • One Solution collect form web for “Passare gli extra per l'attività principale da un'altra chiamata”

    Puoi provare anche questo …

    Crea una class statica che contiene un'istanza di nota, quindi in AddActivity aggiungi i valori come

      StaticClass.noteitem.summary="abc"; StaticClass.noteitem.details="abcdef"; 

    quindi su OnREsume del tuo controllo di mainactivity

      if (StaticClass.noteitem!=null) 

    e accedere al tuo elemento come StaticClass.noteitem.summary ecc.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.