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?

Yanchenko
la source

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.

Jeremy Logan
la source
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?

DustinB
la source
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); 
  }
IntelliJ Amiya
la source
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);
Neha Mehta
la source
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/

trustidkid
la source
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"); 
    }
Pouria Hemati
la source