Come passare alla scheda selezionata precedente quando si preme un button di indietro della barra di azione attività

Ho sei tabs in MainActivity, la seconda scheda ha una list, quando l'utente fa clic sull'elemento di listview, apre una nuova barra Attività con azione, quindi quando l'utente fa clic sul button di return della seconda attività, vorrei andare a scheda precedente (seconda scheda) dell'attività principale, ma caricare la prima scheda (scheda Home).

Come posso risolvere questo problema?

  • Android salva lo stato sul cambiamento di orientamento
  • Come impostare BackgroundColor su ImageView su Android?
  • Il frammento di Android sul progetto ha richiamato il cambiamento di tabulazione
  • come controllare l'arrays string è vuota o null android?
  • Android: EditText in Dialog non tira la tastiera soft
  • asinctasca android con filettatura
  • La variabile non può essere risolta
  • Stile del codice Android in Intellij Idea / Android Studio
  • Qualcuno ha parametri di riferimento (codice & risultati) che confronta le performance delle applicazioni Android scritte in Xamarin C # e Java?
  • Effetti collaterali di modifica del filter e requisiti di un'applicazione esistente in Play / Market di Android
  • come calcolare il calcolo del punto preciso del piede utilizzando l'accelerometro in android?
  • Android - Kotlin - object deve essere dichiarato astratto o implementare un membro astratto
  • 2 Solutions collect form web for “Come passare alla scheda selezionata precedente quando si preme un button di indietro della barra di azione attività”

    Abbiamo qui tre casi. Il button di back-up effettivo (a prescindere da esso è l'hardware o il software), il button principale di Action Bar ("Up") e entrambi i pulsanti:

    • Caso button :

    Quando si chiama SecondActivity , utilizzare startActivityForResult() per mantenere MainActivity informato del ciclo di vita di SecondActivity . Quando si preme "back", catturare questo evento in MainActivity.onActivityResult() e passare alla seconda scheda:

    MainActivity: where avviare attualmente la tua attività :

     // Start SecondActivity that way. REQUEST_CODE_SECONDACTIVITY is a code you define to identify your request startActivityForResult(new Intent(this, SecondActivity.class), REQUEST_CODE_SECONDACTIVITY); 

    MainActivity: onActivityResult () :

     // And this is how you handle its result @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (requestCode == REQUEST_CODE_SECONDACTIVITY && resultCode == RESULT_CANCEL) { switchToTab(2); // switch to tab2 } // else... other cases } 
    • Caso del button "Avanti" di Action Bar :

    Se questo comportmento deve essere connesso al button "Avanti" della barra di azione anziché al button Indietro, è necessario ignorare getSupportParentActivityIntent() o getParentActivityIntent() seconda che utilizziate o less la libreria di supporto.

    SecondActivity: get [Supporto] ParentActivityIntent () :

     @Override public Intent getSupportParentActivityIntent() { // getParentActivityIntent() if you are not using the Support Library final Bundle bundle = new Bundle(); final Intent intent = new Intent(this, MainActivity.class); bundle.putString(SWITCH_TAB, TAB_SECOND); // Both constants are defined in your code intent.putExtras(bundle); return intent; } 

    E poi, è ansible gestire questo in MainActivity.onCreate() .

    MainActivity: onCreate () :

     @Override protected void onCreate(Bundle savedInstanceState) { ... final Intent intent = getIntent(); if (intent.hasExtra(SWITCH_TAB)) { final int tab = intent.getExtras().getInt(SWITCH_TAB); switchToTab(tab); // switch to tab2 in this example } ... 
    • Entrambi i casi pulsanti:

    Se si desidera gestire entrambi i pulsanti allo stesso modo (a prescindere che sia una buona idea o no, non so solo), entrambe le soluzioni sopra possono essere implementate contemporaneamente senza alcun problema.

    Nota laterale : per determinare se questa è una buona idea o less, questa guida ufficiale può aiutare. Soprattutto la sezione " Navigazione in alto con l'icona App ".

    Utilizzando la navigazione verso l'alto per tornare all'attività principale, l'attività principale viene ricreata. Quando l'attività principale viene ricreata, perdi la scheda selezionata. Piuttosto che salvare la scheda selezionata, è più semplice non ricreare l'attività principale. Ciò può essere fatto aggiungendo la seguente row alla sezione attività principale del file AndroidManifest .

     android:launchMode="singleTop" 

    Ciò impedirà di ricreare il genitore e quindi la scheda selezionata in precedenza rimarrà nello stesso stato.

    Ad esempio, se MainActivity è il padre con le tabs, il manifesto dovrebbe apparire qualcosa di simile:

     <activity android:name=".MainActivity" android:launchMode="singleTop"> ... </activity> 

    Guarda anche:

    • ActionBar up la ricarica ricrea l'attività del padre anziché onResume
    • Come posso tornare correttamente ad un'attività principale?
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.