J'aimerais pouvoir transférer des données d'une activité à une autre. Comment cela peut-il être fait?
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>);
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.
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);
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); }
J'espère que vous trouverez la réponse à partir d'ici Envoyer des données à une autre activité - Connexion Android simple
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);
Supposons que vous souhaitiez passer de activité A à activité B.
Nous utilisons donc une intention pour changer d'activité
le code typique ressemble à ceci -
//// 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);
Et pour obtenir les données de l'activité Child
Intent i = getIntent();
if (i!=null) {
String stringData= i.getStringExtra("key");
}
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.