Ein Bundle an startActivity () übergeben?


174

Wie kann ein Bundle korrekt an die Aktivität übergeben werden, die von der aktuellen Aktivität gestartet wird? Gemeinsame Eigenschaften?

Antworten:


425

Sie haben einige Möglichkeiten:

1) Verwenden Sie das Bundle aus der Absicht :

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

2) Erstellen Sie ein neues Bundle

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

3) Verwenden Sie die Verknüpfungsmethode putExtra () des Intent

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


In der gestarteten Aktivität lesen Sie sie dann über:

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

HINWEIS: Bundles verfügen über die Methoden "get" und "put" für alle primitiven Typen, Parcelables und Serializables. Ich habe Strings nur zu Demonstrationszwecken verwendet.


20

Sie können das Bundle aus der Absicht verwenden:

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

Oder ein ganzes Bündel:

myIntent.putExtras(myBundle);

Ist es das, wonach du suchst?


1
Und aus der resultierenden Absicht rufen Sie getIntent (). GetExtras (). Get * () auf, um abzurufen, was zuvor gespeichert wurde.
Yanchenko

16

Übergeben von Daten von einer Aktivität an Aktivität in Android

Eine Absicht enthält die Aktion und optional zusätzliche Daten. Die Daten können mithilfe der Intent- putExtra()Methode an andere Aktivitäten übergeben werden . Daten werden als Extras übergeben und sindkey/value pairs . Der Schlüssel ist immer ein String. Als Wert können Sie die primitiven Datentypen int, float, chars usw. verwenden. Wir können auch Parceable and SerializableObjekte von einer Aktivität an eine andere übergeben.

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

Abrufen von Bundle-Daten von Android-Aktivitäten

Sie können die Informationen mithilfe von getData()Methoden für das Intent-Objekt abrufen . Das Intent- Objekt kann über die getIntent()Methode abgerufen werden .

 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

Mit dem Bundle können Sie Werte von einer Aktivität an eine andere Aktivität übergeben. Erstellen Sie in Ihrer aktuellen Aktivität ein Bundle, legen Sie das Bundle für den jeweiligen Wert fest und übergeben Sie dieses Bundle an die Absicht.

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

Jetzt in Ihrer NewActivity können Sie dieses Bundle erhalten und Ihren Wert abrufen.

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

Sie können Daten auch durch die Absicht weitergeben. Legen Sie in Ihrer aktuellen Aktivität die Absicht wie folgt fest:

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

Jetzt in Ihrer NewActivity können Sie diesen Wert aus einer solchen Absicht erhalten:

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

Warum ein Bundle verwenden, während das Intent-Objekt über die Methoden getExtra und putExtra verfügt?
Psychosis404

0

Schreiben Sie, dies ist die Aktivität, in der Sie sich befinden:

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

In der 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"));

Das funktioniert bei mir, du kannst es versuchen.

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


0

Sie können diesen Code in Ihrer ersten Aktivität verwenden :

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

und Objekt in der zweiten Aktivität erhalten :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.