web-dev-qa-db-fra.com

Comment puis-je obtenir des données supplémentaires d'intention sur Android?

Comment puis-je envoyer des données d'une activité (intention) à une autre?

J'utilise ce code pour envoyer des données:

Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
664
Adham

Tout d’abord, obtenez l’intention qui a démarré votre activité en utilisant la méthode getIntent():

Intent intent = getIntent();

Si vos données supplémentaires sont représentées sous forme de chaînes, vous pouvez utiliser la méthode intent.getStringExtra(String name). Dans ton cas:

String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
1086
Malcolm

Dans l'activité d'accueil

Bundle extras = getIntent().getExtras(); 
String userName;

if (extras != null) {
    userName = extras.getString("name");
    // and get whatever type user account id is
}
177
NickT
//  How to send value using intent from one class to another class
//  class A(which will send data)
    Intent theIntent = new Intent(this, B.class);
    theIntent.putExtra("name", john);
    startActivity(theIntent);
//  How to get these values in another class
//  Class B
    Intent i= getIntent();
    i.getStringExtra("name");
//  if you log here i than you will get the value of i i.e. john
35
Sumit Sharma

Add-up

Définir les données

String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);

Obtenir des données

String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    value = bundle.getString("sample_name");
}
25
phi

Au lieu d'initialiser une autre nouvelle intention de recevoir les données, procédez comme suit:

String id = getIntent().getStringExtra("id");
17
r_allela

Si utilisé dans FragmentActivity, essayez ceci:

La première page s'étend FragmentActivity

Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);

Dans le fragment, il vous suffit d'appeler d'abord getActivity(),

La deuxième page s'étend Fragment :

String receive = getActivity().getIntent().getExtras().getString("name");
11
Bundit Ng

Si vous essayez d’obtenir des données supplémentaires dans des fragments, vous pouvez utiliser: 

Placez les données en utilisant:

Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);

Obtenir des données en utilisant:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


  getArguments().getInt(ARG_SECTION_NUMBER);
  getArguments().getString(ARG_SECTION_STRING);
  getArguments().getBoolean(ARG_SECTION_BOOL);
  getArguments().getChar(ARG_SECTION_CHAR);
  getArguments().getByte(ARG_SECTION_DATA);

}
6
star18bit

Vous pouvez obtenir n'importe quel type de datan supplémentaire par intention , peu importe qu'il s'agisse d'un objet, d'un sting ou de tout type de données.

Bundle extra = getIntent().getExtras();

if (extra != null){
    String str1 = (String) extra.get("obj"); // get a object

    String str2 =  extra.getString("string"); //get a string
}

et Solution la plus courte :

Boolean isGranted = getIntent().getBooleanExtra("tag", false);
2
Hasib Akter

Kotlin

Première activité

val intent = Intent(this, SecondActivity::class.Java)
intent.putExtra("key", "value")
startActivity(intent)

Deuxième activité

val value = getIntent().getStringExtra("key")

Suggestion

Toujours mettre les clés dans le fichier constant pour plus de manière gérée.

companion object {
    val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
2
Khemraj

** Mettre les données par intention - **

 Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
            intent.putExtra("subjectName","Maths");
            intent.putExtra("instituteId",22);
            mContext.startActivity(intent);

** Obtenir les données par intention - **

  String subName = getIntent().getStringExtra("subjectName");
  int insId  getIntent().getIntExtra("instituteId",0);

si nous envoyons Valeur entière par intention. lorsque nous devons utiliser le 2e paramètre 0 dans getIntent (). getIntExtra ("instituteId", 0) sinon, nous n'utilisons pas 0, Android me donne une erreur.

2
Om Prakash Sharma

Passez l'intention avec la valeur sur la première activité:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);

Recevoir l'intention de la deuxième activité; -

Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");

Nous utilisons généralement deux méthodes dans l'intention d'envoyer la valeur et d'obtenir la valeur . Pour envoyer la valeur, nous utiliserons intent.putExtra("key", Value); et lors de la réception de l'intention sur une autre activité, nous utiliserons intent.getStringExtra("key"); pour obtenir les données de l'intention sous la forme String méthode disponible pour obtenir d'autres types de données (Integer, Boolean, etc.) . La clé peut être n'importe quel mot-clé pour identifier la valeur qui signifie quelle valeur vous partagez . J'espère que cela fonctionnera pour vous.

1
Pradeep Sheoran

Juste une suggestion:

Au lieu d'utiliser "id" ou "name" dans votre i.putExtra ("id" .....), je suggérerais, lorsque cela est pertinent, d'utiliser les champs standard actuels pouvant être utilisés avec putExtra (), c'est-à-dire Intent.EXTRA_something.

Une liste complète est disponible à l'adresse Intent (Développeurs Android).

1
eva

Nous pouvons le faire par des moyens simples:

Dans FirstActivity:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);

En seconde activité:

    try {
        Intent intent = getIntent();

        String uid = intent.getStringExtra("uid");
        String pwd = intent.getStringExtra("pwd");

    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStringExtra_EX", e + "");
    }
1
sam

Ceci est pour l'adaptateur, pour l'activité, il vous suffit de changer mContext Pour votre nom d’Activty et pour fragment, vous devez remplacer mContext par getActivity ()

 public static ArrayList<String> tags_array ;// static array list if you want to pass array data

      public void sendDataBundle(){
            tags_array = new ArrayList();
            tags_array.add("hashtag");//few array data
            tags_array.add("selling");
            tags_array.add("cityname");
            tags_array.add("more");
            tags_array.add("mobile");
            tags_array.add("Android");
            tags_array.add("dress");
            Intent su = new Intent(mContext, ViewItemActivity.class);
            Bundle bun1 = new Bundle();
            bun1.putString("product_title","My Product Titile");
            bun1.putString("product_description", "My Product Discription");
            bun1.putString("category", "Product Category");
            bun1.putStringArrayList("hashtag", tags_array);//to pass array list 
            su.putExtras(bun1);
            mContext.startActivity(su);
        }
0
Android Geek

Obtenir différents types d'extra à partir de l'intention

Pour accéder aux données de l'intention, vous devez savoir deux choses.

  • CLÉ 
  • DataType de vos données.

Il existe différentes méthodes dans la classe d’intention pour extraire différents types de types de données . 

getIntent (). XXXX (KEY) ou intent.XXX (KEY);


Donc, si vous connaissez le type de données de votre varibale que vous avez défini dans otherActivity, vous pouvez utiliser la méthode correspondante. 

Exemple pour récupérer une chaîne dans votre activité à partir de l'intention

String profileName = getIntent().getStringExtra("SomeKey");

Liste des différentes variantes de méthodes pour différents dataType

Vous pouvez voir la liste des méthodes disponibles dans la documentation officielle de Intention .

0
Rohit Singh

Vous pouvez aussi faire comme ça
// mettre de la valeur dans l'intention

    Intent in = new Intent(MainActivity.this, Booked.class);
    in.putExtra("filter", "Booked");
    startActivity(in);

// obtient la valeur de l'intention

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    String filter = bundle.getString("filter");
0
Savita Sharma