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?

yanchenko
quelle

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.

Jeremy Logan
quelle
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?

DustinB
quelle
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); 
  }
IntelliJ Amiya
quelle
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);
Neha Mehta
quelle
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/

trustidkid
quelle
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"); 
    }
Pouria Hemati
quelle