Autore Topic: Apertura di activity random o in sequenza  (Letto 133 volte)

Offline ingmarcofilippini

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung
  • Sistema operativo:
    Windows 10
Apertura di activity random o in sequenza
« il: 16 Luglio 2017, 01:05:05 CEST »
0
Ciao a tutti,
dovrei fare una intent che apre un'activity, però questa activity deve cambiare.
Sono 3 activity e devono andare in sequenza, quindi una volta va una poi quando torna indietro e viene riavviata l'activity ne parte un'altra... sempre un ciclo di 3 activity in sequenza.
Si può fare?
grazie in anticipo

Offline capitancooker

  • Utente junior
  • **
  • Post: 91
  • Marco
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    macOS Sierra
Re:Apertura di activity random o in sequenza
« Risposta #1 il: 16 Luglio 2017, 09:38:06 CEST »
0
Non so se fa al caso tuo e se ho copreso l'esigenza.
Dall'activity principale, puoi avviare la prima l'activity con startActivityForResult in cui passi come id il valore che indica la sequenza in uso. Quando l'activity avviata viene chiusa, Android esegue onActivityResult nell'activity principale.
Quindi nell'activity principale fai l'override di onActivityResult dove intercetti l'evento e verifichi il valore di ritorno. Quindi procedi con la seconda activity, e così via.
Ciao,
Marco

Se sbaglio, correggetemi.

Offline ingmarcofilippini

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung
  • Sistema operativo:
    Windows 10
Re:Apertura di activity random o in sequenza
« Risposta #2 il: 16 Luglio 2017, 20:06:47 CEST »
0
Non so se fa al caso tuo e se ho copreso l'esigenza.
Dall'activity principale, puoi avviare la prima l'activity con startActivityForResult in cui passi come id il valore che indica la sequenza in uso. Quando l'activity avviata viene chiusa, Android esegue onActivityResult nell'activity principale.
Quindi nell'activity principale fai l'override di onActivityResult dove intercetti l'evento e verifichi il valore di ritorno. Quindi procedi con la seconda activity, e così via.
Ciao,
Marco

Non credo di aver capito bene. Scusami ma non sono ancora molto pratico su Android.
In pratica io adesso ho le seguenti activity: MainActivity, Main2Activity, Main3Activity, Main4Activity: di cui la 2, 3 e 4 sono quelle che girano in sequenza.

Nella MainActivity ho adesso questo codice:
Codice (Java): [Seleziona]
  @Override
            public void onMotionDetected() {
                startActivity(new Intent(MainActivity.this, Main2Activity.class)); // avvia l'altra activity quando si verifica l'evento onMotionDetected
               }

che quando si verifica l'evento onMotionDetected avvia la Main2Activity.
Cosa gli devo impostare per fare sì che attivi ogni volta un'activity diversa tra le 3?
Grazie in anticipo.

Offline capitancooker

  • Utente junior
  • **
  • Post: 91
  • Marco
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    macOS Sierra
Re:Apertura di activity random o in sequenza
« Risposta #3 il: 16 Luglio 2017, 23:05:15 CEST »
0
In MainActivity metti:
Codice (Java): [Seleziona]
    // codice id per identificare l'activity avviata con startActivityForResult (vedi più in basso)
    private final static int ACTIVITY_2 = 1002;
    private final static int ACTIVITY_3 = 1003;
    private final static int ACTIVITY_4 = 1004;

    // al termine dell'activity (es MainActivity2) viene invocato questo metodo
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case ACTIVITY_2:
                startActivityForResult(new Intent(MainActivity.this, Main3Activity.class);
                break;
            case ACTIVITY_3:
                startActivityForResult(new Intent(MainActivity.this, Main4Activity.class);
                break;
            case ACTIVITY_4:
                // altro
                break;
        }
    }

Per sftuttare questa funzione, al posto di startActivity usa:
Codice (Java): [Seleziona]
startActivityForResult(new Intent(MainActivity.this, Main2Activity.class), ACTIVITY_UNO);
In parole povere, avviando l'MainActivity2 passi l'ID relativo e quando questa activity viene terminata viene invocato onActivityResult nella MainActivity. Testando il valore di ritorno (requestCode) puoi decidere il passo successivo. Unica raccomandazione è che le activity avviate devono terminare o premendo il tasto back o tramite finish();

Sono novello pure io, quindi se c'è qualcuno che ha soluzioni più eleganti, si accomodi ;-)
Ciao,
Marco
Se sbaglio, correggetemi.