Dans une application Android, comment démarrer une nouvelle activité (GUI) lorsqu'un utilisateur clique sur un bouton dans une autre activité, et comment transmettre des données entre ces deux activités?
Réponses
Trop de publicités?Facile. [Re-commandé]
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Les extras sont récupérés de l'autre côté via: [code édité]
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
[ajouté] N'oubliez pas d'ajouter votre nouvelle activité dans le fichier AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
Créer une intention à un ViewPerson de l'activité et de passer le PersonID (pour une recherche de base de données, par exemple).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Puis dans ViewPerson Activité, vous pouvez obtenir l'ensemble des données supplémentaires, assurez-vous qu'elle n'est pas nulle (dans le cas où si vous ne passez pas de données), puis obtenir les données.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Maintenant, si vous avez besoin de partager des données entre deux Activités, vous pouvez également avoir un Mondial de Singleton.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Puis l'appeler dans toute activité par:
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here. Could be setter/getter or some other type of logic
Emmanuel,
Je pense que les informations supplémentaires doivent être mises avant le démarrage de l'activité, sinon les données ne seront pas encore disponibles si vous y accédez dans la méthode onCreate de NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);