Autore Topic: Passare 2 parametri con intent  (Letto 1852 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Passare 2 parametri con intent
« il: 11 Aprile 2014, 10:43:19 CEST »
0
Salve a tutti
vorrei passare 2 parametri con intent da un classe ad un'altra, il problema è che mi riceve solo il primo parametro.
è possibile passare 2 parametri con la intent? se si come?
lascio il codice con cui passo e ricevo i parametri, sicuramente mi mancherà qualche riga

PrimaPagina.java

Codice (Java): [Seleziona]
Intent pacco= new Intent (this,NuovoPacco.class);//definisco una nuova intent che punta a NuovoPacco
                        Intent batt=new Intent (this,NuovoPacco.class);
                       
                        String pkg =getPackageName();//Genere una stringa univoca che si basa sul nome del package
                        String pkg2=getPackageName();
                       
                        pacco.putExtra(pkg,scanContent);//passo i dati all'intent NuovoPacco tramite la funzione putExtra
                        batt.putExtra(pkg2,batteria);
                       
                        startActivity(pacco);  

NuovoPacco.java
Codice (Java): [Seleziona]
Bundle bundle=getIntent().getExtras();//serve a recuperare i valore che sono stati passati all'intent
                String pkg=getPackageName();//stringa univoca per identificare i dati
                Nome=bundle.getString(pkg);//recupero la stringa passata
               
                String pkg2=getPackageName();
                Batteria=bundle.getString(pkg2);
               
                invio=Nome+"@"+Batteria+"@";

alla fine le 2 stringhe fanno concatenate

grazie a tutti :3

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Passare 2 parametri con intent
« Risposta #1 il: 11 Aprile 2014, 11:20:39 CEST »
0
Basta che fai quello che hai scritto (o copiato) nel commento, cioè genera una chiave-string univoca per ciascun parametro:

Codice (Java): [Seleziona]
String param1 =getPackageName()+"parametro_1";//Genere una stringa univoca che si basa sul nome del package
String param2 =getPackageName()+"parametro_2";//Genere una stringa univoca che si basa sul nome del package
...
String param1000 =getPackageName()+"parametro_1000";//Genere una stringa univoca che si basa sul nome del package

Ovviamente meglio se usi nomi significativi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Passare 2 parametri con intent
« Risposta #2 il: 11 Aprile 2014, 13:36:00 CEST »
0
Purtroppo non sembra funzionare  :-(
ho fatto come hai suggerito tu ma passa "null" alla seconda classe   :-(
ho provato sia con i doppi apici che senza ma passa sempre "null"

Codice (Java): [Seleziona]
Intent pacco= new Intent (PrimaPagina.this,NuovoPacco.class);//definisco una nuova intent che punta a NuovoPacco
                        Intent batt=new Intent (PrimaPagina.this,NuovoPacco.class);
                       
                        String pkg =getPackageName()+"scanContent";//Genere una stringa univoca che si basa sul nome del package
                        String pkg2=getPackageName()+"batteria";
                       
                        pacco.putExtra(pkg,scanContent);//passo i dati all'intent NuovoPacco tramite la funzione putExtra
                        batt.putExtra(pkg2,batteria);
                       
                        startActivity(pacco);  

molto probabilmente avrò capito male....

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Passare 2 parametri con intent
« Risposta #3 il: 11 Aprile 2014, 14:16:30 CEST »
0
Se è quello il codice esatto, vedo un'altra anomalia ovvia:
- i due parametri vengono aggiunti a due intent diversi, uno a BATT e uno a PACCO
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Passare 2 parametri con intent
« Risposta #4 il: 11 Aprile 2014, 14:50:56 CEST »
0
allora... ho provato tante varianti del codice per provare a saltarci fuori (mi sono dimenticato di dire che sto provando l'app sul cellulare):

ho fatto quello che hai suggerito e il risultato è che nella seconda pagina sia nella variabile Nome che nella variabile Batteria viene inserito il contenuto della variabile batteria della prima pagina;


PrimaPagina.class
Codice (Java): [Seleziona]
Intent pacco= new Intent (PrimaPagina.this,NuovoPacco.class);//definisco una nuova intent che punta a NuovoPacco
                        //Intent batt=new Intent (PrimaPagina.this,NuovoPacco.class);
                       
                        String pkg =getPackageName();//Genere una stringa univoca che si basa sul nome del package
                        String pkg2=getPackageName();
                       
                        pacco.putExtra(pkg,scanContent);//passo i dati all'intent NuovoPacco tramite la funzione putExtra
                        pacco.putExtra(pkg2,batteria);
                       
                        startActivity(pacco);  

NuovoPacco.class
Codice (Java): [Seleziona]
super.onCreate(savedInstanceState);
                setContentView(R.layout.nuovopacco);
               
                Bundle bundle=getIntent().getExtras();//serve a recuperare i valore che sono stati passati all'intent
                String pkg=getPackageName();//stringa univoca per identificare i dati
                Nome=bundle.getString(pkg);//recupero la stringa passata
               
                Bundle bundle2=getIntent().getExtras();
                String pkg2=getPackageName();
                Batteria=bundle2.getString(pkg2);
               
                invio=Nome+"@"+Batteria;

La stessa cosa accade se uso batt al posto di pacco;

se provo con il suggerimento che mi hai dato prima passa dei valori "null" sia nel caso che uso gli apici sia nel caso non li uso;

Codice (Java): [Seleziona]
Intent pacco= new Intent (PrimaPagina.this,NuovoPacco.class);//definisco una nuova intent che punta a NuovoPacco
                        //Intent batt=new Intent (PrimaPagina.this,NuovoPacco.class);
                       
                        String pkg =getPackageName()+"scanContent";//Genere una stringa univoca che si basa sul nome del package
                        String pkg2=getPackageName()+"batteria";
                       
                        pacco.putExtra(pkg,scanContent);//passo i dati all'intent NuovoPacco tramite la funzione putExtra
                        pacco.putExtra(pkg2,batteria);
                       
                        startActivity(pacco);  

non so cosa altro dirti, al massimo ti posso dare tutto il codice della classe PrimaPagina cosi magari puoi farti una panoramica ma il codice è abbastanza lungo.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Passare 2 parametri con intent
« Risposta #5 il: 11 Aprile 2014, 15:34:08 CEST »
0
Per me il codice nell'ultimo riquadro è OK. Mi sa che il problema è nella parte "ricevente".

Se vedi, è del tutto analogo a questo esempio: Lesson 28. Extras - passing data using Intent
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Passare 2 parametri con intent
« Risposta #6 il: 14 Aprile 2014, 09:04:23 CEST »
0
Perfetto  :-)
Funziona benissimo  :-)
anche questa parte è risolta , ti ringrazio tantissimo  :-)