Autore Topic: Problema putExtra tra 2 Activity  (Letto 348 volte)

Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Problema putExtra tra 2 Activity
« il: 24 Luglio 2015, 10:47:57 CEST »
0
Salve a tutti,
sto realizzando un semplice programma che prevede 2 activity:
cliccando uno dei 4 bottoni della MainActivity lancio l'esecuzione di una sub-Activity aggiungendo un extra all'intent.
A seconda del bottone premuto, l'extra è un valore differente.

Dopo aver premuto per la prima volta un bottone, il problema è che tornando indietro con il tasto back e selezionando
un bottone, mi sono accorto che non viene passato solo il valore extra relativo a questo bottone, ma anche tutti i precedenti.
Devo aver commesso un errore logico nel codice, ma non riesco a capirne la provenienza.

MainActivity:
Codice (Java): [Seleziona]
static String EXTRA_MESSAGE = "Nome";
    Intent openGame;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageButton image1= (ImageButton)findViewById(R.id.button1);
        ImageButton image2= (ImageButton)findViewById(R.id.button2);
        ImageButton image3= (ImageButton)findViewById(R.id.button3);
        ImageButton image4= (ImageButton)findViewById(R.id.button4);

        image1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                openGame = new Intent(MainActivity.this,Game.class);
                openGame.putExtra(EXTRA_MESSAGE, "nome1");
                startActivity(openGame);
            }
        });

        image2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                openGame.putExtra(EXTRA_MESSAGE, "nome2");
                startActivity(openGame);
            }
        });
...
       

Game:
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game_page);

        name = getIntent().getStringExtra(MainActivity.EXTRA_MESSAGE);


In pratica, andando a stampare il valore di name nella seconda activity mi esce:
I/System.out﹕ nome1
I/System.out﹕ nome2


Spero possiate aiutarmi!!! :)  ???

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema putExtra tra 2 Activity
« Risposta #1 il: 24 Luglio 2015, 15:32:26 CEST »
0
Codice (Java): [Seleziona]
image2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                openGame = new Intent(MainActivity.this,Game.class); // se non ricrei l'intent continua ad usare quello creato alla pressione della prima immagine. Ma ti serve poi che l'intent openGame  sia globale? meglio ricrearlo localmente no?
                openGame.putExtra(EXTRA_MESSAGE, "nome2");
                startActivity(openGame);
            }
        });

Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Re:Problema putExtra tra 2 Activity
« Risposta #2 il: 24 Luglio 2015, 18:26:34 CEST »
0
Grazie della risposta! Ho seguito il tuo consiglio e creato localmente l'intent per ogni pressione, ma la situazione non cambia, continua a portarsi il valore del primo bottone premuto.
Altre idee? Bisogna forse "ripulire" l'intent quando si preme il tasto back?

Codice (Java): [Seleziona]
static String EXTRA_MESSAGE = "Nome";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageButton image1= (ImageButton)findViewById(R.id.button1);
        ImageButton image2= (ImageButton)findViewById(R.id.button2);

        image1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent openGame = new Intent(MainActivity.this,Game.class);
                openGame.putExtra(EXTRA_MESSAGE, "nome1");
                startActivity(openGame);
            }
        });

        image2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent openGame = new Intent(MainActivity.this,Game.class);
                openGame.putExtra(EXTRA_MESSAGE, "nome2");
                startActivity(openGame);
            }
        });