Autore Topic: Button  (Letto 439 volte)

Offline leojosh95

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S7 Edge
  • Sistema operativo:
    Windows 10
Button
« il: 28 Marzo 2017, 13:58:16 CEST »
0
Ragazzi volevo sapere come posso dare un Intent ad un Button che mi faccia passare dall'activity in cui sono ad un altra activity casuale..
per esempio se ho activity1,activity2,activity3,activity4,activity5 vorrei che da activity 1 tramite il bottone l'app passi ad un altra activity casuale senza che venga ripescata un'activity già visualizzata.. spero di essere riuscito a spiegarmi!

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 110
  • Respect: +2
    • Mostra profilo
Re:Button
« Risposta #1 il: 29 Marzo 2017, 10:33:28 CEST »
0
Questa soluzione funziona ma l'ho fatta al volo.

Ho creato per comodità una classe chiamata RandomActivity dove all'interno ho messo un costruttore che prende come parametro un int, che sarebbe il numero dell'activity corrente.
All'interno della classe ho creato un metodo getActivity che restituisci un Object. in questo metodo i genera un numero casuale tra 0 e 2 (ho tre activity). Dopo di che si controlla che il numero sia diverso da quello passato al costruttore e successivamente tramite degli if si ritorna l'activity da avviare.

Codice (Java): [Seleziona]
package nicolabrogelli.randomactivityopen;

import java.util.Random;

/**
 * Created by Nicola on 29/03/2017.
 */


public class RandomActivity {

    int numeroActivityCorrente;

    public RandomActivity (int n) {
        this.numeroActivityCorrente = n;
    }

    public Object goActivity() {

        int n;
        Random r = new Random();

        do {
            n = r.nextInt(2);
        } while (n == this.numeroActivityCorrente);

        if(n == 0)
            return  Activity1.class;
        else if (n == 1)
            return  Activity2.class;
        else if (n == 2)
            return  Activity3.class;

        return null;
    }
}

Nel Button di ogni Activity chiaramente all'interno dell' onClick metti questo codice :

Codice (Java): [Seleziona]
                RandomActivity r = new RandomActivity(0);
                Intent i = new Intent(Activity1.this, (Class<?>) r.goActivity());
                startActivity(i);

Il valore passato nel costruttore di RandomActivity identifica l'activity corrente. Se si fosse stati nell'activity2 sarebbe sato 1, nell'activity3 sarebbe stato2 e cosi via.



Offline leojosh95

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S7 Edge
  • Sistema operativo:
    Windows 10
Re:Button
« Risposta #2 il: 29 Marzo 2017, 10:38:59 CEST »
0
Non so davvero come ringraziarti, appena arrivo a casa provo subito e ti faccio sapere se funziona !

Inviato dal mio SM-G935F utilizzando Tapatalk



Post unito: 29 Marzo 2017, 13:16:35 CEST
Allora funziona tutto perfettamente.. nel senso che se se clicco sul pulsante dall'activity 1 e arrivo all'activity 3 allora il pulsante dell'activity 3 (sempre pulsante random) non mi fa riapparire l'activity 1.. tuttavia il pulsante dell'activity 3 mi fa riapparire proprio l'activity 3.. come posso risolvere ?

Cerco di spiegarmi meglio.. praticamente se da activity 1 passo ad activity 2 è possibile che activity 1 venga rimossa dalle activity random che verranno ripescate dopo?
« Ultima modifica: 29 Marzo 2017, 11:45:46 CEST da leojosh95, Reason: Merged DoublePost »

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 110
  • Respect: +2
    • Mostra profilo
Re:Button
« Risposta #3 il: 31 Marzo 2017, 14:12:14 CEST »
0
Ciao devi variare in questo blocco di codice il numero che stra le parentesi. Ad esempio se sei nell'activity1 metti 0, se sei nellla 2, metti 1 e cosi via.
Codice (Java): [Seleziona]
 RandomActivity r = new RandomActivity(0);
Ricordati anche di variare questo parametro  nella classe RandomActivity, il numero tra le parentesi fa si che tu abbia una distribuzione di numeri "casuali" tra 0 e 2, quindi per tre activity. Se aumenti o diminuisci le tue activity varia questo parametro.
Codice (Java): [Seleziona]
n = r.nextInt(2);
ciao

Offline leojosh95

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S7 Edge
  • Sistema operativo:
    Windows 10
Re:Button
« Risposta #4 il: 31 Marzo 2017, 14:14:10 CEST »
0
Quindi in questo modo non dovrei né ripescare la solita activity ne le activity già visualizzate ?

Inviato dal mio SM-G935F utilizzando Tapatalk


Offline Nicolab1971

  • Utente junior
  • **
  • Post: 110
  • Respect: +2
    • Mostra profilo
Re:Button
« Risposta #5 il: 31 Marzo 2017, 14:22:50 CEST »
0
Cosi sicuramente non ricarichi l' Activity che attualmente stai visualizzando. Per non ripescare le activity già visualizzate dovresti implementare una lista, dove vai a inserire tutte le activity che hai già visualizzato. All'interno del metodo goActivity quando generi il numero, controlli se questo è già presente nella lista. Se non c'è avvi l'activity altrimenti generi un altro numero.

Offline leojosh95

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S7 Edge
  • Sistema operativo:
    Windows 10
Re:Button
« Risposta #6 il: 31 Marzo 2017, 14:25:11 CEST »
0
Eh non ho idea di come si faccia 😂 grazie comunque

Inviato dal mio SM-G935F utilizzando Tapatalk


Offline Nicolab1971

  • Utente junior
  • **
  • Post: 110
  • Respect: +2
    • Mostra profilo
Re:Button
« Risposta #7 il: 31 Marzo 2017, 14:29:44 CEST »
0
Domai provo a farti un esempio

Offline leojosh95

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S7 Edge
  • Sistema operativo:
    Windows 10
Re:Button
« Risposta #8 il: 31 Marzo 2017, 14:30:16 CEST »
0
Mi faresti un grandissimo favore ! Grazie mille

Inviato dal mio SM-G935F utilizzando Tapatalk