web-dev-qa-db-fra.com

Transférer des données d'une activité à une autre à l'aide d'intentions

J'aimerais pouvoir transférer des données d'une activité à une autre. Comment cela peut-il être fait?

21
user555910

Grâce au code ci-dessous, nous pouvons envoyer les valeurs entre les activités

utilisez le code ci-dessous dans l'activité parent

Intent myintent=new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);

utilisez le code ci-dessous dans l'activité des enfants

String s= getIntent().getStringExtra(<StringName>);
27
Pinki

Vous pouvez accéder aux variables ou aux objets d’autres classes ou d’Activités de plusieurs manières.

A. Base de données 

B. préférences partagées.

C. Sérialisation d'objet.

D. Une classe pouvant contenir des données communes peut être nommée Utilitaires communs, cela dépend de vous.

E. Transmission de données via Intents et une interface pouvant être parcellisée.

Cela dépend des besoins de votre projet.

A. Base de données

SQLite est une base de données Open Source intégrée à Android. SQLite prend en charge les fonctionnalités de base de données relationnelles standard telles que la syntaxe SQL, les transactions et les instructions préparées. 

Tutoriels - http://www.vogella.com/articles/AndroidSQLite/article.html

B. Préférences partagées

Supposons que vous souhaitiez stocker un nom d'utilisateur. Donc, il y aura maintenant deux choses: un nom d'utilisateur Key, Value Value.

Comment stocker

 // Create object of SharedPreferences.
 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
 //now get Editor
 SharedPreferences.Editor editor = sharedPref.edit();
 //put your value
 editor.putString("userName", "stackoverlow");

 //commits your edits
 editor.commit();

_ {En utilisant putString (), putBoolean (), putInt (), putFloat (), putLong (), vous pouvez enregistrer votre type d'état souhaité.

Comment chercher

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String userName = sharedPref.getString("userName", "Not Available");

http://developer.Android.com/reference/Android/content/SharedPreferences.html

C. Sérialisation d'objet

La sérialisation d'objet est utilisée si nous voulons enregistrer un état d'objet pour l'envoyer sur le réseau ou si vous pouvez également l'utiliser à vos fins.

Utilisez les haricots Java et stockez-les comme l'un de ses champs et utilisez les accesseurs et les configurateurs pour cela.

Les JavaBeans sont des classes Java possédant des propriétés. Pensez àproperties en tant que variables d'instance privée. Comme ils sont privés, le seul moyen De les accéder à l'extérieur de leur classe est d'utiliser des méthodes de la classe. Les méthodes Qui modifient la valeur d'une propriété sont appelées méthodes setter et les méthodes Qui extraient la valeur d'une propriété sont appelées méthodes getter. 

public class VariableStorage implements Serializable  {

    private String inString ;

    public String getInString() {
        return inString;
    }

    public void setInString(String inString) {
        this.inString = inString;
    }


}

Définissez la variable dans votre méthode de messagerie à l'aide de

VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);

Ensuite, utilisez objet Serialzation pour sérialiser cet objet et dans votre autre classe, désérialiser cet objet.

Lors de la sérialisation, un objet peut être représenté sous la forme d'une séquence d'octets contenant les données de l'objet, ainsi que des informations sur le type de l'objet et les types de données stockés dans l'objet.

Une fois qu'un objet sérialisé a été écrit dans un fichier, il peut être lu à partir du fichier et désérialisé, c'est-à-dire que les informations de type et les octets représentant l'objet et ses données peuvent être utilisés pour recréer l'objet en mémoire.

Si vous voulez un tutoriel pour cela référez vous à ce lien

http://javawithswaranga.blogspot.in/2011/08/serialization-in-Java.html

Obtenir une variable dans d'autres classes

D. CommonUtilities

Vous pouvez créer vous-même une classe pouvant contenir des données communes dont vous avez souvent besoin dans votre projet.

Échantillon

public class CommonUtilities {

    public static String className = "CommonUtilities";

}

E. Transmission de données par intentions

Veuillez vous référer à ce tutoriel pour cette option de transmission de données.

http://shri.blog.kraya.co.uk/2010/04/26/Android-parcel-data-to-pass-between-activities-using-parcelable-classes/

14
Nikhil Agrawal

Lorsque vous transmettez des données d’une activité à une autre, procédez comme suit:

Dans l'activité des parents:

startActivity(new Intent(presentActivity.this, NextActivity.class).putExtra("KEY_StringName",ValueData)); 

ou comme ci-dessous dans l’activité Parent

Intent intent  = new Intent(presentActivity.this,NextActivity.class);     
intent.putExtra("KEY_StringName", name);   
intent.putExtra("KEY_StringName1", name1);   
startActivity(intent);

Dans l'activité d'un enfant effectuez les actions indiquées ci-dessous

TextView tv = ((TextView)findViewById(R.id.textViewID))
tv.setText(getIntent().getStringExtra("KEY_StringName"));

ou faire comme ci-dessous dans l'activité de l'enfant  

TextView tv = ((TextView)findViewById(R.id.textViewID));
TextView tv1 = ((TextView)findViewById(R.id.textViewID1))

/* Get values from Intent */
Intent intent = getIntent();         
String name  = intent.getStringExtra("KEY_StringName");
String name1  = intent.getStringExtra("KEY_StringName1");

tv.setText(name);
tv.setText(name1);
10
Rahul Baradia

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

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

startActivity(intent);

Récupération de données d'ensemble de l'activité Android

Intent intent = getIntent();
  if (intent!=null) {
  String stringData= intent.getStringExtra(KEY);
  int numberData = intent.getIntExtra(KEY, defaultValue);
  boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
  char charData = intent.getCharExtra(KEY, defaultValue);   }
1
katwal-Dipak

J'espère que vous trouverez la réponse à partir d'ici Envoyer des données à une autre activité - Connexion Android simple

0
JSupport

Il vous suffit d'envoyer des extras lors de l'appel de votre intention

comme ça:

Intention d'intention = nouvelle intention (getApplicationContext (), SecondActivity.class); intent.putExtra ("Nom de la variable", "Valeur à transmettre"); startActivity (intention);

Maintenant, sur la méthode OnCreate de votre SecondActivity, vous pouvez récupérer les extras comme ceci

Si la valeur que vous avez envoyée était "long"

valeur longue = getIntent (). getLongExtra ("Nom de la variable que vous avez envoyé comme extra", defaultValue (vous pouvez tout lui donner));

Si la valeur envoyée est une "chaîne"

Valeur de chaîne = getIntent (). GetStringExtra ("Nom de la variable que vous avez envoyé comme extra");

Si la valeur que vous avez envoyée était un "booléen"

Valeur booléenne = getIntent (). GetStringExtra ("Nom de la variable que vous avez envoyé comme extra", defaultValue);

0
Mayank Saini

Votre but

Supposons que vous souhaitiez passer de activité A à activité B.

Nous utilisons donc une intention pour changer d'activité

 Activity Switch

le code typique ressemble à ceci - 

Dans l'activité A [A.class]

//// Create a New Intent object
Intent i = new Intent(getApplicationContext(), B.class);

/// add what you want to pass from activity A to Activity B
i.putExtra("key", "value");

/// start the intent
startActivity(i);

Dans l'activité B [B.class]

Et pour obtenir les données de l'activité Child

Intent i = getIntent();

if (i!=null) {
   String stringData= i.getStringExtra("key");
}
0

Cela fonctionne mieux:

Grâce au code ci-dessous, nous pouvons envoyer les valeurs entre les activités

utilisez le code ci-dessous dans l'activité parente (CLASSE PARENT/CLASSE D'ENVOI VALEUR)

Intent myintent=new Intent(<PARENTCLASSNAMEHERE>.this,<TARGETCLASSNAMEHERE>.class).putExtra("<StringName>", value);
startActivity(myintent);

utilisez le code ci-dessous dans l'activité des enfants (CLASSE/ACTIVITÉ CIBLE)

String s= getIntent().getStringExtra(<StringName>);

Veuillez voir ici que "StringName" est le nom que l'activité de destination/enfant intercepte, tandis que "valeur" est le nom de la variable, identique à celui de la classe parent/cible/d'envoi.

0
sudoCoder