Autore Topic: Passare informazione dati da 1°Activity a 2°Activity & ritorno  (Letto 1183 volte)

Offline StigHelmer

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
Buonasera ragazzi, sono in grande difficoltà e spero che qualcuno possa aiutarmi a risolvere un problema a cui non riesco a venire a capo.

Il PROBLEMA è questo:

Ho un Activity che lancia un QR scanner ed importa  dal QR il testo da esso codificato, e viene mostrato a schermo tramite AlertDialog. Allego Screen e parte del codice dell'Activity:


Codice (Java): [Seleziona]
 @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == Activity.RESULT_OK && requestCode == 0) {
                        String scanResult = data.getStringExtra("SCAN_RESULT");                
                       new AlertDialog.Builder(this).setTitle("Fai questo").setIcon(R.drawable.ic_launcher).setMessage(String.format(scanResult)).setNeutralButton("Chiudi", null).show();  
               
                }
                else {new AlertDialog.Builder(this).setTitle("Scansione annullata").setIcon(R.drawable.ic_launcher).setMessage("Il GIOCATORE ha interrotto la scansione.").setNeutralButton("Chiudi", null).show();
                }
        }

Quello che vorrei riuscire a fare è (invece di visualizzare a schermo il risultato della scansione) mandare il risultato di scanResult su una seconda Activity, abinare a questo determianto risultato "ADASTRAQRTESTNUMERICGAME" un numero casuale in un intervallo e rispedirlo nella prima Activity all'interno dell'AllertDialog.

Spero che qualcuno mi possa aiutare anche con solo con qualche consiglio perchè sono veramente alle prime armi con la programmazione Android ed il passaggio di informazioni tra un'Activity e l'altra non riesco proprio a digerirlo!

Grazie a tutti e buona serata!



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
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline StigHelmer

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
Re:Passare informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #2 il: 29 Aprile 2013, 20:28:41 CEST »
0
Questo lo avevi visto?

[facile] Passaggio di dati tra un'activity ed un'altra - Android Developers Italia
Ciao bradipao, grazie tante per  l'interessamento!
Si ho letto il tutorial ma proprio non riesco a capirlo. In particolare non capisco questa parte di codice, probabilmente la più banale :
Codice (Java): [Seleziona]
//dati da passare
        int i=5;        
        String s="ciao";
        Person p=new Person("Erich", "Gamma");
        //per passare un tipo di dato personalizzato (Person)
        //esso deve implementare l'interfaccia Serializable
Non capisco cosa siano i,s,p e perchè sono associate rispetivamente ad int,String e Person...

dovrei fare una cosa del genere?
Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == Activity.RESULT_OK && requestCode == 0) {
                        String scanResult = data.getStringExtra("SCAN_RESULT");
                        String scansione = scanResult

//la seconda activity da lanciare(LogicQR)
        intent=new Intent(getApplicationContext(), LogicQR.class);
       
        String pkg=getPackageName();
        //per rendere univoci i nomi delle chiavi passate
        //è consigliato (la doc dice 'must') aggiungere il nome del nostro package davanti al nome
       
        intent.putExtra(pkg+".myString", scansione);      //inseriamo i dati nell'intent

e quel myString in intent.putExtra cos'è?

Scusatemi per la mia niubbaggine :'(

Post unito: 29 Aprile 2013, 22:23:32 CEST
Forse sono totalmente fuori strada con quello che mi serve veramente fare. Ovvero avrei bisogno che se il qr scansionato è la parola ADASTRAQRTESTNUMERICGAME (od altre da scegliere), l'applicazione mi restituisca nell'AllertDialog un numero casuale tra 1 e 10 ad esempio. Quindi non sono sicurissimo che mandare la scansione alla seconda Activity serva effettivamente..
« Ultima modifica: 29 Aprile 2013, 22:23:32 CEST da StigHelmer, Reason: Merged DoublePost »

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 informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #3 il: 30 Aprile 2013, 08:19:32 CEST »
0
Il tutorial è contrassegnato "facile" perchè effettivamente è abbastanza semplice da comprendere. Se non ti è chiaro lo scenario generale forse è perchè ti mancano alcuni concetti di base di android. Per esempio: hai chiaro cosa è un intent?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andrea_g

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • andreagorfer
    • @andreagorfer
    • Mostra profilo
    • Bondon's Crew
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Max OS X 10.9.2
Andrea

Offline StigHelmer

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
Re:Passare informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #5 il: 30 Aprile 2013, 13:30:12 CEST »
0
Puoi dare un'occhiata anche qui:
Richiamare un'Activity da un'altra pagina con Intent Corso Android™ Creare App Gratis e facilmente - Davide Copelli: Video-Corsi.com
Ciao, ma non capisco cosa centri questo tutorial con quello che servirebbe a me.. Mi muovo tra le varie activity con discreta disinvoltura, quello che non riesco a fare è portarmi delle informazioni dietro.
« Ultima modifica: 30 Aprile 2013, 13:44:05 CEST da StigHelmer »

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 informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #6 il: 30 Aprile 2013, 13:57:22 CEST »
0
Ciao, ma non capisco cosa centri questo tutorial con quello che servirebbe a me.. Mi muovo tra le varie activity con discreta disinvoltura, quello che non riesco a fare è portarmi delle informazioni dietro.

Prima ho detto che probabilmente non avevi chiaro il concetto di intent, perchè per muoversi tra le activity stai usando gli intent ... ed è con gli intent che ti porti le informazioni dietro.

Con questo codice alleghi il dato "scansione" all'intent che usi per cambiare activity, dandogli il nome interno myString, nome che userai nell'activity ricevente per accedere al dato.
Codice (Java): [Seleziona]
intent.putExtra(pkg+".myString", scansione);      //inseriamo i dati nell'intent
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline StigHelmer

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
Re:Passare informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #7 il: 30 Aprile 2013, 14:00:00 CEST »
0
Prima ho detto che probabilmente non avevi chiaro il concetto di intent, perchè per muoversi tra le activity stai usando gli intent ... ed è con gli intent che ti porti le informazioni dietro.

Con questo codice alleghi il dato "scansione" all'intent che usi per cambiare activity, dandogli il nome interno myString, nome che userai nell'activity ricevente per accedere al dato.
Codice (Java): [Seleziona]
intent.putExtra(pkg+".myString", scansione);      //inseriamo i dati nell'intent
Perfetto grazie mille! ora provo a metterci le mani e vi faccio sapere come procede

Offline andrea_g

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • andreagorfer
    • @andreagorfer
    • Mostra profilo
    • Bondon's Crew
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Max OS X 10.9.2
Re:Passare informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #8 il: 30 Aprile 2013, 14:32:44 CEST »
0
Grazie Bradipao. Pensavo di esser io ad aver capito male, invece non del tutto!  :D
Andrea

Offline StigHelmer

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
Re:Passare informazione dati da 1°Activity a 2°Activity & ritorno
« Risposta #9 il: 30 Aprile 2013, 16:52:43 CEST »
0
Bene. Contro ogni più rosea aspettativa sono riuscito a passare la scansione da un'activity all'altra ed a riaprirla dentro l'AlertDialog. Alla chiusura dell'AlertDialog riparte l'activity precedente. Vi mostro lo stralcio di codice interessato e ne approfitto per ringraziarvi:

1°Activity
Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == Activity.RESULT_OK && requestCode == 0) {
                        String scanResult = data.getStringExtra("SCAN_RESULT") ;
                        String valore = scanResult ;
                       
                       Intent i =new Intent(getApplicationContext(), LogicaQR.class);
                       String pkg=getPackageName();                    
                       i.putExtra(pkg+".myString", valore);
                        startActivity(i);
                       
                 //new AlertDialog.Builder(this).setTitle("Fai questo").setIcon(R.drawable.ic_launcher).setMessage(String.format(scanResult)).setNeutralButton("Chiudi", null).show();  
               
                }
                else {new AlertDialog.Builder(this).setTitle("Scansione annullata").setIcon(R.drawable.ic_launcher).setMessage("Il GIOCATORE ha interrotto la scansione.").setNeutralButton("Chiudi", null).show();

2°Activity
Codice (Java): [Seleziona]
Intent PRENDO=getIntent(); // l'intent di LogicaQR
       
        String pkg=getPackageName();
        String schermo=PRENDO.getStringExtra(pkg+".myString");  //prendo i dati scansionati
       
        new AlertDialog.Builder(this).setTitle("Fai questo").setIcon(R.drawable.ic_launcher).setMessage(String.format(schermo)).setNeutralButton("Fine del turno", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Intent openScanQR = new Intent(LogicaQR.this, ScanQR.class);
                        startActivity(openScanQR);
            }}).show();

Ora viene la parte difficile:

A schermo non devo mostrare il testo della scansione (ovvero il dato che mi sono portato nella seconda Activity), bensì delle frasi in ordine casuale legate esattamente a quel testo.

Esempio:

Se scansiono PippoQR a schermo vorrei vedere una soluzione casuale tra Pippo1,Pippo2 o Pippo3;
Se scansiono SempronioQR a schermo vorrei vedere una soluzione casuale tra Sempronio1,Sempronio2 o Sempronio3;
etc...
Devo creare un Database? Idee? Io ZERO  :-)

Post unito: 30 Aprile 2013, 18:01:50 CEST
Ci sono abbastanza vicino, usando gli Array e il random :)

Post unito: 30 Aprile 2013, 19:45:19 CEST
HO RISOLTO! grazie a tutti!

CHIUDO O:-)
« Ultima modifica: 30 Aprile 2013, 19:45:19 CEST da StigHelmer, Reason: Merged DoublePost »