Kann mir jemand bitte sagen, wie genau getExtra()
und putExtra()
für Intents verwendet werden sollen? Eigentlich habe ich eine String-Variable, zB str, die einige String-Daten speichert. Nun möchte ich diese Daten von einer Aktivität an eine andere Aktivität senden.
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifer = null;
i.putExtra(strName, keyIdentifer );
und dann in SecondScreen.Java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.table);
TextView userName = (TextView)findViewById(R.id.userName);
Bundle bundle = getIntent().getExtras();
if(bundle.getString("strName")!= null)
{
//TODO here get the string stored in the string variable and do
// setText() on userName
}
}
Ich weiß, es ist eine sehr grundlegende Frage, aber leider bin ich hier festgefahren. Bitte helfen.
Vielen Dank,
Edit: Hier ist die Zeichenfolge, die ich von einem Bildschirm zum anderen zu übergeben versuche, dynamisch .. Das heißt, ich habe einen editText, in dem ich Zeichenfolgen bekomme, die der Benutzer schreibt. Dann mit Hilfe von myEditText.getText().toString()
. Ich bekomme den eingegebenen Wert als Zeichenfolge und muss diese Daten übergeben.
Verwenden Sie dies, um die Datei zu "setzen" ...
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = null;
i.putExtra("STRING_I_NEED", strName);
Um den Wert abzurufen, versuchen Sie Folgendes:
String newString;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("STRING_I_NEED");
}
} else {
newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}
erster Screen.Java
text=(TextView)findViewById(R.id.tv1);
edit=(EditText)findViewById(R.id.edit);
button=(Button)findViewById(R.id.bt1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String s=edit.getText().toString();
Intent ii=new Intent(MainActivity.this, newclass.class);
ii.putExtra("name", s);
startActivity(ii);
}
});
Zweiter Screen.Java
public class newclass extends Activity
{
private TextView Textv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intent);
Textv = (TextView)findViewById(R.id.tv2);
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String j =(String) b.get("name");
Textv.setText(j);
}
}
}
Beste Methode ...
Sendeaktivität
Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value); // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);
EmpfangenAktivität
Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName"); // retrieve the data using keyName
/// kürzester Weg, um Daten zu erhalten ..
String data = getIntent().getExtras().getString("keyName","defaultKey");
// Dies erfordert API 12 . // Der zweite Parameter ist optional. Wenn keyName den Wert null hat, verwenden Sie die defaultkey
als Daten.
Dies ist, was ich verwendet habe, hoffentlich hilft es jemandem .. einfach und effektiv.
schicke Daten
intent = new Intent(getActivity(), CheckinActivity.class);
intent.putExtra("mealID", meal.Meald);
startActivity(intent);
daten empfangen
int mealId;
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
mealId = bundle.getInt("mealID");
}
prost!
Es ist sehr einfach, intent
in Android zu implementieren. Um von einer Aktivität zu einer anderen zu wechseln, müssen wir zwei Methoden putExtra();
und getExtra();
Nun zeigen.
Intent intent = new Intent(activity_registration.this, activity_Login.class);
intent.putExtra("AnyKeyName", Email.getText().toString()); // pass your values and retrieve them in the other Activity using AnyKeyName
startActivity(intent);
Jetzt müssen wir den Wert vom Parameter AnyKeyName
abrufen, der unten angegebene Code hilft dabei
String data = getIntent().getExtras().getString("AnyKeyName");
textview.setText(data);
Wir können den Empfangswert problemlos von Intent
aus einstellen, wo immer wir dies benötigen.
Ein kleiner Nachtrag: Sie müssen keinen eigenen Namen für den Schlüssel erstellen, Android liefert diesen, z. Intent.EXTRA_TEXT
. Ändern der akzeptierten Antwort:
Intent i = new Intent(FirstScreen.this, SecondScreen.class); String strName = null; i.putExtra(Intent.EXTRA_TEXT, strName);
Um den Wert abzurufen, versuchen Sie Folgendes:
String newString; Bundle extras = getIntent().getExtras(); if(extras == null) { newString= null; } else { newString= extras.getString(Intent.EXTRA_TEXT); }
Intent intent = new Intent(view.getContext(), ApplicationActivity.class);
intent.putExtra("int", intValue);
intent.putExtra("Serializable", object);
intent.putExtra("String", stringValue);
intent.putExtra("parcelable", parObject);
startActivity(intent);
ApplicationActivity
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
int mealId = bundle.getInt("int");
Object object = bundle.getSerializable("Serializable");
String string = bundle.getString("String");
T string = <T>bundle.getString("parcelable");
}
Einfacher
absenderseite
Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
i.putExtra("id","string data");
startActivity(i)
empfängerseite
Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
String strData = i.getStringExtra("id");
hasExtra()
, um zu prüfen, ob der Intent Daten im Schlüssel hat.getStringExtra()
direkt verwenden.Passdaten
intent.putExtra(PutExtraConstants.USER_NAME, "user");
Daten empfangen
String userName;
if (getIntent().hasExtra(PutExtraConstants.USER_NAME)) {
userName = getIntent().getStringExtra(PutExtraConstants.USER_NAME);
}
Geben Sie Schlüssel immer als Best Practice in Konstanten ein.
public interface PutExtraConstants {
String USER_NAME = "USER_NAME";
}
Einfach, In der ersten Aktivität-
EditText name= (EditText) findViewById(R.id.editTextName);
Button button= (Button) findViewById(R.id.buttonGo);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,Main2Activity.class);
i.putExtra("name",name.getText().toString());
startActivity(i);
}
});
In der zweiten Aktivität
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView t = (TextView) findViewById(R.id.textView);
Bundle bundle=getIntent().getExtras();
String s=bundle.getString("name");
t.setText(s);
}
Sie können if/else-Bedingungen hinzufügen, wenn Sie möchten.
Push-Daten
import Android.content.Intent;
...
Intent intent =
new Intent(
this,
MyActivity.class );
intent.putExtra( "paramName", "paramValue" );
startActivity( intent );
Der obige Code befindet sich möglicherweise im Haupt activity
. "MyActivity.class
" ist das zweite Activity
, das wir starten möchten; Es muss explizit in Ihrer AndroidManifest.xml
-Datei enthalten sein.
<activity Android:name=".MyActivity" />
Daten ziehen
import Android.os.Bundle;
...
Bundle extras = getIntent().getExtras();
if (extras != null)
{
String myParam = extras.getString("paramName");
}
else
{
//..oops!
}
In diesem Beispiel befindet sich der obige Code in Ihrer MyActivity.Java
-Datei.
Gotchas
Diese Methode kann nur strings
übergeben. Nehmen wir also an, Sie müssen eine ArrayList
an Ihre ListActivity
übergeben. Eine mögliche Problemumgehung besteht darin, eine durch Kommas getrennte Zeichenfolge zu übergeben und sie dann auf der anderen Seite zu teilen.
Alternativlösungen
Verwenden Sie SharedPreferences
funktion setzen
etname=(EditText)findViewById(R.id.Name);
tvname=(TextView)findViewById(R.id.tvName);
b1= (ImageButton) findViewById(R.id.Submit);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String s=etname.getText().toString();
Intent ii=new Intent(getApplicationContext(), MainActivity2.class);
ii.putExtra("name", s);
Toast.makeText(getApplicationContext(),"Page 222", Toast.LENGTH_LONG).show();
startActivity(ii);
}
});
getfunction
public class MainActivity2 extends Activity {
TextView tvname;
EditText etname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
tvname = (TextView)findViewById(R.id.tvName);
etname=(EditText)findViewById(R.id.Name);
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String j2 =(String) b.get("name");
etname.setText(j2);
Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show();
}
}
senden
startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));
get
String myData = getIntent.getStringExtra("key");
String in Intent-Objekt einfügen
Intent intent = new Intent(FirstActivity.this,NextAcitivity.class);
intent.putExtra("key",your_String);
StartActivity(intent);
NextAcitvity in der onCreate-Methode get String
String my_string=getIntent().getStringExtra("key");
das ist eine einfache und kurze Methode
Sie können einfach eine statische Variable verwenden, um die Zeichenfolge Ihres Edittext zu speichern, und diese Variable dann in der anderen Klasse verwenden. Hoffe, dies wird Ihr Problem lösen
setze zuerst den String
Intent secondIntent = new Intent(this, typeof(SecondActivity));
secondIntent.PutExtra("message", "Greetings from MainActivity");
danach abrufen
var message = this.Intent.GetStringExtra("message");
das ist alles ;)
Bei FirstScreen.Java
Intent intent = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifier = null;
intent.putExtra(strName, keyIdentifier);
Bei SecondScreen.Java
String keyIdentifier;
if (savedInstanceState != null)
keyIdentifier= (String) savedInstanceState.getSerializable(strName);
else
keyIdentifier = getIntent().getExtras().getString(strName);