Passando un pacchetto su startActivity ()?


174

Qual è il modo corretto di passare un pacchetto all'attività che viene avviata da quella corrente? Proprietà condivise?

Risposte:


426

Hai alcune opzioni:

1) Utilizzare il Bundle dal Intent :

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) Crea un nuovo pacchetto

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3) Utilizzare il metodo di scelta rapida putExtra () dell'intento

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);


Quindi, nell'attività avviata, li leggeresti tramite:

String value = getIntent().getExtras().getString(key)

NOTA: Bundles avere "get" e metodi di "put" per tutti i tipi primitivi, parcelables e Serializables. Ho appena usato le stringhe a scopo dimostrativo.


20

È possibile utilizzare il pacchetto dall'intento:

Bundle extras = myIntent.getExtras();
extras.put*(info);

O un intero pacchetto:

myIntent.putExtras(myBundle);

È questo quello che stai cercando?


1
E dall'intento risultante chiami getIntent (). GetExtras (). Get * () per ottenere ciò che è stato memorizzato in precedenza.
yanchenko,

16

Passare i dati da un'attività all'attività in Android

Un intento contiene l'azione e, facoltativamente, dati aggiuntivi. I dati possono essere passati ad altre attività utilizzando il putExtra()metodo intent . I dati vengono passati come extra e lo sono key/value pairs. La chiave è sempre una stringa. Come valore puoi usare i tipi di dati primitivi int, float, chars, ecc. Possiamo anche passare Parceable and Serializableoggetti da un'attività all'altra.

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);

Recupero dei dati del bundle dall'attività Android

È possibile recuperare le informazioni utilizzando i getData()metodi sull'oggetto Intent. L' oggetto Intent può essere recuperato tramite il getIntent()metodo

 Intent intent = getIntent();
  if (null != intent) { //Null Checking
    String StrData= intent.getStringExtra(KEY);
    int NoOfData = intent.getIntExtra(KEY, defaultValue);
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
    char charData = intent.getCharExtra(KEY, defaultValue); 
  }

6

Puoi trasferire valori da un'attività a un'altra utilizzando il pacchetto. Nella tua attività corrente, crea un pacchetto e imposta il pacchetto per il valore particolare e passa quel pacchetto all'intento.

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

Ora nella tua NewActivity, puoi ottenere questo bundle e recuperare il tuo valore.

Bundle bundle = getArguments();
String value = bundle.getString(key);

Puoi anche passare i dati attraverso l'intento. Nella tua attività attuale, imposta l'intento in questo modo,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

Ora nella tua NewActivity, puoi ottenere quel valore da intenti come questo,

String value = getIntent().getExtras().getString(key);

Perché usare un bundle mentre l'oggetto intent ha i metodi getExtra e putExtra?
Psychosis404

0

Scrivi questa è l'attività in cui ti trovi:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

In NextActivity.java

Intent getIntent = getIntent();
//call a TextView object to set the string to
TextView text = (TextView)findViewById(R.id.textview_id);
text.setText(getIntent.getStringExtra("string_name"));

Questo funziona per me, puoi provarlo.

Fonte: https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/


0

puoi usare questo codice nella tua prima attività :

 Intent i = new Intent(Context, your second activity.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

e ottieni l'oggetto nella seconda attività :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.