Pulsante Android Actionbar Su verso il button di sistema Back

Sto utilizzando la barra di azione e il button "su" per tornare da un'attività di dettaglio all'attività principale, che funziona bene. Allo stesso modo, l'utente può premere il button "back" del sistema per tornare all'attività principale.

Nella mia attività principale, i dati onCreate() vengono scaricati da internet per visualizzare l'avvio dell'app. Ho notato che quando utilizzo il button "up" di Actionbar per passare da un dettaglio all'attività principale, viene eseguito onCreate() , re-download dei dati. Ma onCreate() non viene eseguito quando utilizzo il button "back" del sistema, quindi mostrando immediatamente la vista attività principale.

  • Durata di una variabile statica in Android
  • Come copiare i dispositivi virtuali scaricati da Genymotion in un'altra macchina?
  • Come modificare il text di un CheckBox in listview?
  • Imposta il tempo con l'android AnalogClock personalizzato dalla sua class originale
  • Android - come hide / mostrare progressbar onclick
  • Cercando di get i dati per il metodo POST Retrofit
  • Il codice che utilizzo nell'attività di dettaglio per implementare il button "su" è:

     switch (item.getItemId()) { case android.R.id.home: Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; 

    Vorrei che il button "su" si comporti come il button "indietro" e non onCreate() . Ma non sono sicuro di come fare questo accadere, o quale codice di path il button "indietro" attua per tornare all'attività principale.

    Grazie!

  • Esempio di SDK di raccolta di amici di Facebook non funziona Android
  • android Come allungare le righe nella griglia per riempire lo schermo?
  • Come passare ArrayList <CustomeObject> da un'attività all'altra?
  • Android AsyncTask - Ordine di esecuzione
  • aggiungendo collegamenti sociali di condivisione all'applicazione phonegap
  • Come impostare il tempo sul dispositivo in modo programmato
  • 6 Solutions collect form web for “Pulsante Android Actionbar Su verso il button di sistema Back”

    Invece di avviare una nuova attività, finisci semplicemente l'attività di dettaglio in cui sei in corso

     switch (item.getItemId()) { case android.R.id.home: finish(); return true; 

    Quindi tornerai all'attività precedente nello stack di attività (la tua attività principale) e non dovrai call Crea

    Penso che una soluzione migliore possa essere trovata in questo post .

    La chiamata finish() funziona in situazioni specifiche, ma non sempre può produrre il comportmento descritto nella documentazione, ad esempio:

    immettere qui la descrizione dell'immagine

    Chiamando

     Intent intent = NavUtils.getParentActivityIntent(this); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); NavUtils.navigateUpTo(this, intent); 

    torni all'attività del padre nello stato in cui lo hai lasciato. Se hai una struttura app piatta, agirà comunque come il button Indietro.

    Se vuoi fare esattamente quello che fa Back, puoi farlo:

     @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: break; } return super.onOptionsItemSelected(item); } 

    Si noti che l'implementazione predefinita di onBackPressed() chiama solo finish() , ma onBackPressed può essere sovrascritto.

    Credo che il modo più semplice sia quello di ignorare il metodo "getParentActivityIntent" dell'attività di dettaglio aggiungendo la bandiera "Intent.FLAG_ACTIVITY_CLEAR_TOP":

     @Nullable @Override public Intent getParentActivityIntent() { Intent intent = super.getParentActivityIntent(); if (intent != null) { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } return intent; } 

    per una reale "home" funzionalità, dovresti vedere le demo api, in "Attività app / attività / riordino".

    il motivo: cosa succede se hai qualcosa di simile: activity1-> activity2-> activity3, e ora vuoi andare all'attività1 premendo il button Home sulla barra di azione?

    C'è un'altra soluzione che può essere in mano per qualcuno. Ho avuto lo stesso doppio comportmento quando l'utente ha premuto i pulsanti Back e ActionbarBack. Sono andato bene con il comportmento di Back btn. Non volevo che un'attività venisse ricreata. Così ho superato il metodo

      @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } 

    Funziona bene per me

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