Comment puis-je obtenir des données supplémentaires 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); 

Tout d’abord, obtenez l’intention qui a démarré votre activité à l’aide de 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 intent.getSsortingngExtra(Ssortingng name) . Dans ton cas:

 Ssortingng id = intent.getSsortingngExtra("id"); Ssortingng name = intent.getSsortingngExtra("name"); 

Dans l’activité de réception

 Bundle extras = getIntent().getExtras(); Ssortingng userName; if (extras != null) { userName = extras.getSsortingng("name"); // and get whatever type user account id is } 
 // 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.getSsortingngExtra("name"); // if you log here i than you will get the value of i ie john 

Add-up

Définir les données

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

Obtenir des données

 Ssortingng value; Bundle bundle = getIntent().getExtras(); if (bundle != null) { value = bundle.getSsortingng("sample_name"); } 

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

 Ssortingng id = getIntent().getSsortingngExtra("id"); 

Si utilisé dans un FragmentActivity, essayez ceci:

La première page étend FragmentActivity

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

Dans le fragment, il vous suffit d’appeler getActivity() premier,

La deuxième page étend Fragment :

 Ssortingng receive = getActivity().getIntent().getExtras().getSsortingng("name"); 

Si vous essayez d’obtenir des données supplémentaires en fragments, vous pouvez essayer d’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().getSsortingng(ARG_SECTION_STRING); getArguments().getBoolean(ARG_SECTION_BOOL); getArguments().getChar(ARG_SECTION_CHAR); getArguments().getByte(ARG_SECTION_DATA); } 

Juste une suggestion:

Au lieu d’utiliser “id” ou “name” dans votre i.putExtra (“id” …..), je suggérerais, lorsque cela est logique, d’utiliser les champs standards courants pouvant être utilisés avec putExtra (), c’est-à-dire Intent.EXTRA_something.

Une liste complète peut être trouvée à Intent (Android Developers).

Nous pouvons le faire par des moyens simples:

Dans FirstActivity:

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

En seconde activité:

  try { Intent intent = getIntent(); Ssortingng uid = intent.getSsortingngExtra("uid"); Ssortingng pwd = intent.getSsortingngExtra("pwd"); } catch (Exception e) { e.printStackTrace(); Log.e("getSsortingngExtra_EX", e + ""); } 

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

// tire la valeur de l’intention

  Intent intent = getIntent(); Bundle bundle = intent.getExtras(); Ssortingng filter = bundle.getSsortingng("filter"); 

Obtenir différents types d’intentions supplémentaires

Pour accéder aux données de Intent, vous devez savoir deux choses.

  • CLÉ
  • DataType de vos données.

Il existe différentes méthodes dans la classe Intent pour extraire différents types de types de données. Ça ressemble à ça

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

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

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

 Ssortingng profileName = getIntent().getSsortingngExtra("SomeKey"); 

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

Vous pouvez voir la liste des méthodes disponibles dans la documentation officielle sur l’ intention .

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

  public static ArrayList 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.putSsortingng("product_title","My Product Titile"); bun1.putSsortingng("product_description", "My Product Discription"); bun1.putSsortingng("category", "Product Category"); bun1.putSsortingngArrayList("hashtag", tags_array);//to pass array list su.putExtras(bun1); mContext.startActivity(su); } 

Vous pouvez obtenir n’importe quel type de donnée supplémentaire , que ce soit un object ou des données de type sting ou anytype.

 Bundle extra = getIntent().getExtras(); if (extra != null){ Ssortingng str1 = (Ssortingng) extra.get("obj"); // get a object Ssortingng str2 = extra.getSsortingng("ssortingng"); //get a ssortingng } 

Transmettez l’intention avec une valeur sur la première activité:

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

Recevoir l’intention de la deuxième activité;

 Inetent intent=getIntent(); Ssortingng User=intent.getSsortingngExtra("uid"); Ssortingng Pass=intent.getSsortingngExtra("pwd"); 

Nous utilisons généralement deux méthodes pour envoyer la valeur et obtenir la valeur. Pour envoyer la valeur, nous utiliserons intent.putExtra("Key",Value); et pendant la réception de l’intention sur une autre activité, nous utiliserons intent.getSsortingngExtra("Key"); Ici, la clé peut être n’importe quel mot-clé pour identifier la valeur que vous partagez. J’espère que cela fonctionnera pour vous.

Je viens de poster une réponse qui couvre ce sujet plus en détail, y compris des alternatives.

Il utilise l’ API Vapor , un nouveau framework Android inspiré par jQuery, que j’ai écrit pour simplifier le développement Android. Consultez l’exemple dans cette réponse pour savoir comment transférer facilement des données entre les activités.

Il montre également VaporIntent , qui vous permet d’enchaîner les appels de méthode et d’utiliser la .put(...) surchargée .put(...) :

 $.Intent().put("data", "myData").put("more", 568)... 

Vous pouvez facilement transférer des données autour de toute votre application à l’aide de l’ API Vapor. Nous espérons que cela vous sera utile, à vous et aux autres, lors du développement d’applications.