Quelqu'un peut-il me dire comment utiliser exactement getExtra()
et putExtra()
à dessein? En fait, j'ai une variable de chaîne, disons str, qui stocke des données de chaîne. Maintenant, je veux envoyer ces données d'une activité à une autre activité.
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifer = null;
i.putExtra(strName, keyIdentifer );
puis dans le 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
}
}
Je sais que c'est une question très fondamentale mais malheureusement, je suis coincé ici. S'il vous plaît aider.
Merci,
Edit: Ici, la chaîne que je tente de passer d’un écran à l’autre est dynamique . Puis avec l'aide de myEditText.getText().toString()
. Je reçois la valeur entrée sous forme de chaîne, puis je dois transmettre ces données.
Utilisez ceci pour "mettre" le fichier ...
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = null;
i.putExtra("STRING_I_NEED", strName);
Ensuite, pour récupérer la valeur, essayez quelque chose comme:
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");
}
premier 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);
}
});
Second 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);
}
}
}
Meilleure Méthode ...
EnvoiActivité
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);
RéceptionActivité
Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName"); // retrieve the data using keyName
/// moyen le plus rapide de recevoir des données ..
String data = getIntent().getExtras().getString("keyName","defaultKey");
// Cela nécessite api 12 . // le second paramètre est optionnel. Si keyName est null, utilisez la variable defaultkey
comme donnée.
C’est ce que j’utilise, espérons-le, cela aidera quelqu'un .. simple et efficace.
envoyer des données
intent = new Intent(getActivity(), CheckinActivity.class);
intent.putExtra("mealID", meal.Meald);
startActivity(intent);
obtenir des données
int mealId;
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
mealId = bundle.getInt("mealID");
}
à votre santé!
Il est très facile d'implémenter intent
dans Android .. Il vous faut passer d'une activité à une autre, nous devons utiliser deux méthodes putExtra();
et getExtra();
Now.
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);
Maintenant, nous devons obtenir la valeur du paramètre AnyKeyName
, le code mentionné ci-dessous vous aidera à le faire.
String data = getIntent().getExtras().getString("AnyKeyName");
textview.setText(data);
Nous pouvons facilement définir la valeur de réception de Intent
, là où nous en avons besoin.
Un petit ajout: vous n'avez pas à créer votre propre nom pour la clé, Android les fournit, par exemple Intent.EXTRA_TEXT
. Modifier la réponse acceptée:
Intent i = new Intent(FirstScreen.this, SecondScreen.class); String strName = null; i.putExtra(Intent.EXTRA_TEXT, strName);
Ensuite, pour récupérer la valeur, essayez quelque chose comme:
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);
ApplicationActivité
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");
}
Plus simple
côté expéditeur
Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
i.putExtra("id","string data");
startActivity(i)
côté récepteur
Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
String strData = i.getStringExtra("id");
hasExtra()
pour vérifier si l'intention contient des données sur la clé.getStringExtra()
directement.Pass Data
intent.putExtra(PutExtraConstants.USER_NAME, "user");
Obtenir des données
String userName;
if (getIntent().hasExtra(PutExtraConstants.USER_NAME)) {
userName = getIntent().getStringExtra(PutExtraConstants.USER_NAME);
}
Toujours mettre les clés dans les constantes comme meilleure pratique.
public interface PutExtraConstants {
String USER_NAME = "USER_NAME";
}
Simple, Dans la première activité-
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);
}
});
En deuxième activité-
@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);
}
Vous pouvez ajouter des conditions if/else si vous le souhaitez.
Données Push
import Android.content.Intent;
...
Intent intent =
new Intent(
this,
MyActivity.class );
intent.putExtra( "paramName", "paramValue" );
startActivity( intent );
Le code ci-dessus pourrait être à l'intérieur de la activity
principale. "MyActivity.class
" est la deuxième Activity
que nous voulons lancer; il doit être explicitement inclus dans votre fichier AndroidManifest.xml
.
<activity Android:name=".MyActivity" />
Données de traction
import Android.os.Bundle;
...
Bundle extras = getIntent().getExtras();
if (extras != null)
{
String myParam = extras.getString("paramName");
}
else
{
//..oops!
}
Dans cet exemple, le code ci-dessus se trouverait dans votre fichier MyActivity.Java
.
Gotchas
Cette méthode ne peut passer que strings
. Supposons donc que vous deviez passer une ArrayList
à votre ListActivity
; une solution possible consiste à passer une chaîne séparée par des virgules, puis à la scinder de l'autre côté.
Solutions alternatives
Utilisez SharedPreferences
mettre la fonction
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();
}
}
envoyer
startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));
get
String myData = getIntent.getStringExtra("key");
Placer une chaîne dans l'objet d'intention
Intent intent = new Intent(FirstActivity.this,NextAcitivity.class);
intent.putExtra("key",your_String);
StartActivity(intent);
NextAcitvity dans la méthode onCreate get String
String my_string=getIntent().getStringExtra("key");
c'est une méthode simple et rapide
Vous pouvez simplement utiliser une variable statique pour stocker la chaîne de votre edittext, puis utiliser cette variable dans l'autre classe. J'espère que cela résoudra votre problème
mettre la ficelle en premier
Intent secondIntent = new Intent(this, typeof(SecondActivity));
secondIntent.PutExtra("message", "Greetings from MainActivity");
le récupérer après ça
var message = this.Intent.GetStringExtra("message");
c'est tout ;)
À FirstScreen.Java
Intent intent = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifier = null;
intent.putExtra(strName, keyIdentifier);
Sur SecondScreen.Java
String keyIdentifier;
if (savedInstanceState != null)
keyIdentifier= (String) savedInstanceState.getSerializable(strName);
else
keyIdentifier = getIntent().getExtras().getString(strName);