674 votes

Comment démarrer une nouvelle activité en cliquant sur le bouton

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?

1205voto

Emmanuel Points 6262

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"/>
 

62voto

Bryan Denny Points 12910

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

21voto

vishal rangani Points 35
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);

11voto

user1923551 Points 502
    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);

    This is an explicit intent to start secondscreen activity.

8voto

user1337489 Points 34

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X