Risposte:
I pacchetti vengono generalmente utilizzati per il passaggio di dati tra varie attività Android. Dipende da te quale tipo di valori vuoi passare, ma i bundle possono contenere tutti i tipi di valori e passarli alla nuova attività.
Puoi usarlo in questo modo:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
Puoi ottenere i valori passati facendo:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Puoi trovare maggiori informazioni su:
Passa i dati tra le attività usando Bundle
e Intent
oggetti.
Il tuo primo creare un Bundle
oggetto
Bundle b = new Bundle();
Quindi, associa i dati della stringa memorizzati nella anystring
chiave bundle"myname"
b.putString("myname", anystring);
Ora crea un Intent
oggetto
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Passa l'oggetto bundle b
all'intento
in.putExtras(b);
e inizia la seconda attività
startActivity(in);
Nella seconda attività, dobbiamo accedere ai dati passati dalla prima attività
Intent in = getIntent();
Ora, è necessario ottenere i dati dal pacchetto
Bundle b = in.getExtras();
Infine, ottieni il valore dei dati della stringa associati alla chiave denominata "myname"
String s = b.getString("myname");
Devo aggiungere che i pacchetti vengono utilizzati dalle attività per trasmettere i dati a se stessi in futuro.
Quando lo schermo ruota o quando viene avviata un'altra attività, il metodo protected void onSaveInstanceState(Bundle outState)
viene invocato e l'attività viene distrutta. Successivamente, viene creata un'altra istanza dell'attività e public void onCreate(Bundle savedInstanceState)
viene chiamata. Quando viene creata la prima istanza di attività, il pacchetto è nullo; e se il bundle non è nullo, l'attività continua alcune attività avviate dal suo predecessore.
Android salva automaticamente il testo nei campi di testo, ma non salva tutto e talvolta compaiono bug sottili.
L'anti-pattern più comune, tuttavia, sta assumendo che onCreate()
esegua solo l'inizializzazione. È sbagliato, perché deve anche ripristinare lo stato.
Esiste un'opzione per disabilitare questo comportamento "ricrea attività sulla rotazione", ma non impedirà i bug relativi al riavvio, ma renderà più difficile menzionarli.
Si noti inoltre che l'unico metodo la cui chiamata è garantita quando l'attività verrà distrutta è onPause()
. (Vedi il grafico del ciclo di vita delle attività nei documenti.)
A Bundle
è molto simile a un Map
oggetto Java che associa le String
chiavi ai valori. Viene utilizzato per trasferire informazioni tra attività e altri componenti dell'applicazione. Viene anche utilizzato dal framework per acquisire e ripristinare le informazioni sullo stato.
Il motivo per cui Android non usa semplici Map
oggetti vecchi per questo è che Map
è troppo flessibile; può contenere oggetti (come, ad esempio, flussi I / O) che non possono essere serializzati. L' Bundle
API limita i tipi di oggetti che possono essere aggiunti a un pacchetto in modo tale che i contenuti del pacchetto siano garantiti come serializzabili. Il framework Android si basa su questa proprietà.
Ti suggerisco di leggere la documentazione sui Fondamenti dell'applicazione . Questo spiega, tra le altre cose, cosa sono i fasci e le intenzioni e a cosa servono.
I pacchetti possono essere utilizzati per inviare dati arbitrari da un'attività all'altra tramite Intenti. Quando si trasmette un Intento, le Attività interessate (e altri BroadcastRecievers) verranno informati di ciò. Un intento può contenere un pacchetto in modo da poter inviare dati aggiuntivi insieme all'intento.
I bundle sono mapping di valori-chiave, quindi in un certo senso sono come un hash, ma non sono strettamente limitati a un singolo mapping di oggetti String / Foo. Si noti che solo alcuni tipi di dati sono considerati "Parcelable" e sono esplicitamente indicati nell'API Bundle.
Basta creare un pacchetto,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
IN "this_is_the_next_class.class"
È possibile recuperare gli elementi in questo modo.
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Bundle: - Una mappatura dai valori String ai vari tipi Parcelable.
Il bundle viene generalmente utilizzato per il passaggio di dati tra varie attività di Android.
quando chiamiamo onPause () quindi onStop () e poi in ordine inverso onStop () a onPause ().
I dati salvati che il sistema utilizza per ripristinare lo stato precedente è chiamato "stato dell'istanza" ed è una raccolta di coppie chiave-valore archiviate in un oggetto Bundle.
il bundle viene utilizzato per condividere i dati tra le attività e per salvare lo stato dell'app nel metodo oncreate () in modo che l'app venga a sapere dove è stata interrotta ... Spero che aiuti :)
l'uso del bundle invia i dati da un'attività all'altra con l'aiuto di intent object; Il pacchetto contiene i dati che possono essere di qualsiasi tipo.
Ora dico come creare un bundle passando i dati tra due attività.
Passaggio 1: alla prima attività
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
Passaggio 2: sulla seconda attività
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
Penso che questo sia utile per te ...........
Il bundle non è solo per trasferire dati tra due diversi componenti, ma soprattutto è usato per ripristinare i valori memorizzati prima che l'attività venga distrutta in una nuova attività.
come il testo in un EditText
widget o la posizione di scorrimento di a ListView
.
Prima attività:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
Seconda attività:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");