web-dev-qa-db-fra.com

Comment utiliser putExtra () et getExtra () pour les données de chaîne

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.

277
Shaista Naaz

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");
}
369
Will Tate

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);
        }
    }
}
63
ReemaRazdan

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.

44
Xar E Ahmer

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é!

15
Sindri Þór

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.

7

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);
}
5
serv-inc
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");
}
4
Samet öztoprak

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");
2
David Untama

Mise à jour dans Intention class.

  • Utilisez hasExtra() pour vérifier si l'intention contient des données sur la clé.
  • Vous pouvez maintenant utiliser 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";
}
1
Khemraj

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.

1
Srinivas Nallapu

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

1

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();
        }
    }
1

envoyer

startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));

get

String myData = getIntent.getStringExtra("key");
0
H.Fa8

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

0
kamaljeet Singh

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

0
Adithya M P N

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 ;)

0
shyam_

À 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);
0
Shaheen Ahamed S