webentwicklung-frage-antwort-db.com.de

Wie kann ich Zeichenfolge von einer Aktivität zur anderen senden?

Ich habe also eine Zeichenfolge in activity2

String message = String.format(
"Current Location \n Longitude: %1$s \n Latitude: %2$s", lat, lng); 

ich möchte diese Zeichenfolge in Textfeld in Activity1 einfügen. Wie kann ich das machen? Vielen Dank im Voraus.

25
Luch Filip

Sie können Absichten verwenden, dh Nachrichten, die zwischen Aktivitäten gesendet werden. In einer Absicht können Sie alle Arten von Daten, String, int usw. einfügen.

In Ihrem Fall speichern Sie in activity2 vor dem Aufruf von activity1 eine String-Nachricht auf folgende Weise:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);

In activity1 in onCreate() können Sie die String-Nachricht abrufen, indem Sie eine Bundle (die alle von der aufrufenden Aktivität gesendeten Nachrichten enthält) abrufen und getString() aufrufen:

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");

Dann können Sie den Text in der TextView setzen:

TextView txtView = (TextView) findViewById(R.id.your_resource_textview);    
txtView.setText(message);

Hoffe das hilft !

83
jbihan

Sie können Daten von einer Aktivität zur anderen mit einer Intent senden.

Intent sendStuff = new Intent(this, TargetActivity.class);
sendStuff.putExtra(key, stringvalue);
startActivity(sendStuff);

Sie können diese Informationen dann in der zweiten Aktivität abrufen, indem Sie die Absicht ermitteln und die Zeichenfolge extra extrahieren. Tun Sie dies in Ihrer onCreate()-Methode.

Intent startingIntent = getIntent();
String whatYouSent = startingIntent.getStringExtra(key, value);

Dann müssen Sie nur noch setText für Ihre TextView aufrufen und diese Zeichenfolge verwenden. 

13
Rarw

Angenommen, es gibt EditText et1 in Ihrer MainActivity und Sie möchten dies an SecondActivity weitergeben

String s=et1.getText().toString();
Bundle basket= new Bundle();
basket.putString("abc", s);
Intent a=new Intent(MainActivity.this,SecondActivity.class);
a.putExtras(basket);
startActivity(a);

jetzt in Second Activity, sagen Sie, Sie möchten die Zeichenfolge von EditText et1 in TextView txt1 von SecondActivity setzen

Bundle gt=getIntent().getExtras();
str=gt.getString("abc");
txt1.setText(str);
4
Aditya Harsh
 Intent intent = new Intent(activity1.this, activity2.class);
 intent.putExtra("message", message);
 startActivity(intent);

In activity2 in onCreate () können Sie die String-Nachricht abrufen, indem Sie ein Bundle (das alle von der aufrufenden Aktivität gesendeten Nachrichten enthält) abrufen und getString () dafür aufrufen:

  Bundle bundle = getIntent().getExtras();
  String message = bundle.getString("message");
3
Sudhir singh

ZWEI FÄLLE

Es gibt zwei Situationen, wenn wir über die Weitergabe von Daten zwischen Aktivitäten sprechen. 

Nehmen wir an, es gibt zwei Aktivitäten A und B und einen String X. und Sie befinden sich in Aktivität A

Nun zwei Fälle 

1) A → B
2) A <-B

FALL 1): Zeichenfolge X befindet sich in A und Sie möchten es in Aktivität B erhalten.

Das ist sehr einfach. 

In Aktivität A. 

1) Absicht erstellen
2) Setzen Sie einen Extra-Wert
3) startActivity 

Intent i = new Intent(A.this, B.class);
i.putExtra("Your_KEY",X);
startActivity(i)

In Aktivität B 

Rufen Sie in der onCreate-Methode die Zeichenfolge X mit dem Schlüssel ab, den Sie beim Speichern von X (Your_KEY) verwendet haben. 

Intent i = getIntent();
String s = i.getStringExtra("Your_KEY");

Fall 2)
Dieser Fall ist etwas schwierig, wenn Sie neu in Android sind Entwicklung.
Da Sie sich in Aktivität A befinden, wechseln Sie zu Aktivität B, Sammeln Sie die Zeichenfolge, gehen Sie zurück zu Aktivität A und rufen Sie die .__ ab. gesammelte Zeichenfolge oder Daten. Mal sehen, wie wir mit dieser Situation umgehen. 

In Aktivität A
1) Absicht erstellen
2) Starten Sie eine Aktivität mit einem Anforderungscode. 

Intent i = new Intent(A.this, B.class);
startActivityForResult(i,your_req_code);

In Aktivität B
1) Setzen Sie den String X in die Absicht
2) Ergebnis einstellen
3) Beenden Sie die Aktivität 

Intent returnIntent = new Intent();
returnIntent .putString("KEY",X);
setResult(resCode,returnIntent);   // for the first argument, you could set Activity.RESULT_OK or your custom rescode too
finish();

Wieder in Aktivität A
1) Überschreiben Sie die onActivityResult-Methode 

onActicvityResult(int req_code, int res_code, Intent data)
{
       if(req_code==your_req_code)
       {
          String X = data.getStringExtra("KEY")
       }
}

Weitere Informationen zu Fall 2

Sie fragen sich vielleicht, was der reqCode ist, resCode in der onActicvityResult(int reqCode, resCode, Intent data) 

reqCode ist nützlich, wenn Sie anhand von ermitteln müssen, welche Aktivität Sie als Ergebnis erhalten. 

Nehmen wir an, Sie haben zwei Schaltflächen. Eine Schaltfläche startet die Kamera (Sie klicken auf ein Foto und erhalten als Ergebnis die Bitmap dieses Bildes in Ihrer Aktivität.) Eine andere Schaltfläche startet GoogleMap (Sie erhalten die aktuellen Koordinaten Ihres Standorts zurück). Um zwischen den Ergebnissen beider Aktivitäten zu unterscheiden, starten Sie CameraActivty und MapActivity mit unterschiedlichen Anforderungscodes. 

resCode: ist nützlich, wenn Sie zwischen unterscheiden müssen, wie die Ergebnisse zum Anfordern von Aktivität zurückkehren. 

Zum Beispiel: Sie starten die Kameraaktivität. Wenn die Kameraaktivität beginnt, können Sie entweder ein Foto aufnehmen oder einfach zur Anforderung einer Aktivität zurückkehren, ohne ein Foto mit der Zurück-Taste zu machen. In dieser Situation sendet Ihre Kameraaktivität also ein Ergebnis mit unterschiedlichem Rescode ACTIVITY.RESULT_OK und ACTIVITY.RESULT_CANCEL. 

Relevante Links 

Lesen Sie mehr über das Erzielen von Ergebnissen

2
Rohit Singh

Um den Text von activity2 in activity1 einfügen zu können, müssen Sie zuerst eine visit - Funktion in activity2 erstellen.

public void visitactivity1()
{
    Intent i = new Intent(this, activity1.class);
    i.putExtra("key", message);
    startActivity(i);
}

Nachdem Sie diese Funktion erstellt haben, müssen Sie sie über Ihre onCreate () - Funktion von activity2 aufrufen:

visitactivity1();

Fahren Sie dann mit der Java-Datei activity1 fort. Erstellen Sie in der Funktion onCreate () ein Bundle - Objekt, rufen Sie die frühere Nachricht über ihren Schlüssel über dieses Objekt ab und speichern Sie sie in einem String.

    Bundle b = getIntent().getExtras();
    String message = b.getString("key", ""); // the blank String in the second parameter is the default value of this variable. In case the value from previous activity fails to be obtained, the app won't crash: instead, it'll go with the default value of an empty string

Setzen Sie dieses Element in ein TextView oder EditText oder in das gewünschte Layoutelement, das Sie mit der Funktion setText () bevorzugen.

0
Rafi

Sie können den GNLauncher verwenden, der Teil einer von mir geschriebenen Hilfsprogrammbibliothek ist, wenn viel Interaktion mit der Aktivität erforderlich ist. Mit der Bibliothek ist es fast so einfach wie das Aufrufen einer Funktion mit den erforderlichen Parametern für das Activity-Objekt. https://github.com/noxiouswinter/gnlib_Android/wiki#gnlauncher

0
jinais

Absichten sind intensiv .

Absichten sind nützlich, um Daten im Android-Framework weiterzuleiten. Sie können mit Ihrer eigenen Activities und sogar mit anderen Prozessen kommunizieren. Schauen Sie im Entwicklerhandbuch nach, und wenn Sie spezielle Fragen haben (es ist viel zu verdauen), kommen Sie zurück.

0
Collin Flynn