Passare un Bundle su startActivity ()?
-
12-09-2019 - |
Domanda
Qual è il modo corretto per passare un pacchetto per l'attività che viene lanciato da quello attuale? Requisiti comuni?
Soluzione
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) Creazione di un nuovo bundle
Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);
3) Utilizzare il putExtra () scorciatoia metodo dell'Intento
Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);
Poi, in attività lanciato, si dovrebbe leggerli tramite:
String value = getIntent().getExtras().getString(key)
Nota: Bundle avere "get" e "put" metodi per tutti i tipi primitivi, parcelables e Serializables. Ho appena usato Corde per scopi dimostrativi.
Altri suggerimenti
È possibile utilizzare il bundle dal Intent:
Bundle extras = myIntent.getExtras();
extras.put*(info);
o di un intero pacchetto:
myIntent.putExtras(myBundle);
E 'questo quello che stai cercando?
Il passaggio dei dati da un un'attività all'altra in Android
Un intento contiene l'azione ed i dati opzionalmente aggiuntivi. I dati possono essere passati alle altre attività utilizzando il metodo putExtra()
intenti. I dati vengono passati come comparse e sono key/value pairs
. La chiave è sempre una stringa. Come valore che è possibile utilizzare tipi di dati primitivi int, float, caratteri, ecc Possiamo anche passare Parceable and Serializable
oggetti da un'attività ad altri.
Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);
Recupero dei dati del pacco dall'attività Android
È possibile recuperare le informazioni utilizzando getData()
i metodi per l'oggetto Intent. Il intenti oggetto può essere recuperato tramite la 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);
}
È possibile passare valori da un'attività ad un'altra attività utilizzando il bundle. Nella vostra attività in corso, creare un pacchetto e impostare il pacchetto per il particolare valore e passare quel fagotto per l'intento.
Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);
Ora nel tuo NewActivity, è possibile ottenere questo pacchetto e retrive vostro valore.
Bundle bundle = getArguments();
String value = bundle.getString(key);
È anche possibile passare i dati attraverso l'intento. Nella vostra attività corrente, impostare l'intento di questo tipo,
Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);
Ora nel tuo NewActivity, è possibile ottenere quel valore da intenti di questo tipo,
String value = getIntent().getExtras().getString(key);
Scrivi questa è l'attività che si trovi in:
Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);
Nel 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, si può provare.
è possibile utilizzare questo codice nel tuo prima attività :
Intent i = new Intent(Context, your second activity.class);
i.putExtra("key_value", "your object");
startActivity(i);
e ottenere l'oggetto in seconda attività :
Intent in = getIntent();
Bundle content = in.getExtras();
// check null
if (content != null) {
String content = content_search.getString("key_value");
}