Passer un Bundle sur startActivity ()?


174

Quelle est la bonne façon de transmettre un bundle à l'activité qui est lancée à partir de l'actuelle? Propriétés partagées?

Réponses:


426

Vous avez quelques options:

1) Utilisez le bundle de l' intention :

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) Créez un nouveau pack

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3) Utilisez la méthode de raccourci putExtra () de l'intention

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);


Ensuite, dans l'activité lancée, vous les liriez via:

String value = getIntent().getExtras().getString(key)

REMARQUE: Les bundles ont des méthodes "get" et "put" pour tous les types primitifs, Parcelables et Serializables. Je viens d'utiliser des chaînes à des fins de démonstration.


20

Vous pouvez utiliser le Bundle à partir de l'intention:

Bundle extras = myIntent.getExtras();
extras.put*(info);

Ou un bundle complet:

myIntent.putExtras(myBundle);

Est-ce ce que vous recherchez?


1
Et à partir de l'intention résultante, vous appelez getIntent (). GetExtras (). Get * () pour obtenir ce qui a été stocké auparavant.
yanchenko

16

Passer des données d'une activité à une activité dans Android

Un intent contient l'action et éventuellement des données supplémentaires. Les données peuvent être transmises à une autre activité à l'aide de la putExtra()méthode d' intention . Les données sont transmises comme extras et le sont key/value pairs. La clé est toujours une chaîne. Comme valeur, vous pouvez utiliser les types de données primitifs int, float, chars, etc. Nous pouvons également passer des Parceable and Serializableobjets d'une activité à une autre.

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);

Récupération des données de bundle à partir de l'activité Android

Vous pouvez récupérer les informations à l'aide de getData()méthodes sur l'objet Intent. L' objet Intent peut être récupéré via la getIntent()méthode.

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

6

Vous pouvez transmettre des valeurs d'une activité à une autre activité à l'aide du Bundle. Dans votre activité actuelle, créez un bundle et définissez le bundle pour la valeur particulière et transmettez ce bundle à l'intention.

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

Maintenant dans votre NewActivity, vous pouvez obtenir ce bundle et récupérer votre valeur.

Bundle bundle = getArguments();
String value = bundle.getString(key);

Vous pouvez également transmettre des données via l'intention. Dans votre activité actuelle, définissez l'intention comme ceci,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

Maintenant, dans votre NewActivity, vous pouvez obtenir cette valeur d'une intention comme celle-ci,

String value = getIntent().getExtras().getString(key);

Pourquoi utiliser un bundle alors que l'objet intent a les méthodes getExtra et putExtra?
Psychosis404

0

Écrivez ceci est l'activité dans laquelle vous vous trouvez:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

Dans le 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"));

Cela fonctionne pour moi, vous pouvez l'essayer.

Source: https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/


0

vous pouvez utiliser ce code dans votre première activité :

 Intent i = new Intent(Context, your second activity.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

et obtenir un objet dans la deuxième activité :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.