Comment démarrer une nouvelle activité sur un clic de bouton

Dans une application Android, comment démarrer une nouvelle activité en cliquant sur un bouton d’une autre activité et comment passer des données entre ces deux activités?

Facile.

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:

 @Override protected void onCreate(Bundle savedInstanceState) { Intent intent = getIntent(); Ssortingng value = intent.getSsortingngExtra("key"); //if it's a ssortingng you stored. } 

N’oubliez pas d’append votre nouvelle activité dans le fichier AndroidManifest.xml:

  

Créez une intention pour une activité ViewPerson et transmettez le PersonID (pour une recherche de firebase database, par exemple).

 Intent i = new Intent(getBaseContext(), ViewPerson.class); i.putExtra("PersonID", personID); startActivity(i); 

Ensuite, dans ViewPerson Activity, vous pouvez obtenir le paquet de données supplémentaires, assurez-vous qu’il n’est pas nul (dans le cas où vous ne transmettez parfois pas de données), puis récupérez les données.

 Bundle extras = getIntent().getExtras(); if(extras !=null) { personID = extras.getSsortingng("PersonID"); } 

Maintenant, si vous avez besoin de partager des données entre deux activités, vous pouvez également avoir un Singleton Global.

 public class YourApplication extends Application { public SomeDataClass data = new SomeDataClass(); } 

Puis appelez-le dans n’importe quelle activité en:

 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 

Les réponses actuelles sont excellentes mais une réponse plus complète est nécessaire pour les débutants. Il y a 3 façons différentes de démarrer une nouvelle activité dans Android et elles utilisent toutes la classe Intent ; Intention | Développeurs Android .

  1. Utiliser l’atsortingbut onClick du bouton. (Débutant)
  2. Assigner un OnClickListener() via une classe anonyme. (Intermédiaire)
  3. Méthode d’interface large à l’aide de l’instruction switch . (Pro)

Voici le lien vers mon exemple si vous voulez suivre: https://github.com/martinsing/ToNewActivityButtons

1. Utiliser l’atsortingbut onClick du bouton. (Débutant)

Les boutons ont un atsortingbut onClick qui se trouve dans le fichier .xml:

   

En classe Java:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } public void goToAnActivity(View view) { Intent intent = new Intent(this, AnActivity.class); startActivity(intent); } public void goToAnotherActivity(View view) { Intent intent = new Intent(this, AnotherActivity.class); startActivity(intent); } 

Avantage : Facile à créer à la volée, modulaire, et peut facilement définir plusieurs onClick sur le même objective.

Inconvénient : lisibilité difficile lors de l’examen.

2. Assigner un OnClickListener() via une classe anonyme. (Intermédiaire)

C’est à ce moment-là que vous définissez un setOnClickListener() distinct sur chaque button et que vous remplacez chaque onClick() avec sa propre intention.

En classe Java:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(view.getContext(), AnActivity.class); view.getContext().startActivity(intent);} }); button2 = (Button) findViewById(R.id.button2); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(view.getContext(), AnotherActivity.class); view.getContext().startActivity(intent);} }); 

Avantage : facile à faire à la volée.

Inconvénient : il y aura beaucoup de cours anonymes qui rendront la lisibilité difficile lors de l’examen.

3. Méthode d’interface large à l’aide de l’instruction switch . (Pro)

C’est lorsque vous utilisez une instruction switch pour vos boutons dans la méthode onClick() pour gérer tous les boutons de l’activité.

En classe Java:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button1.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button1: Intent intent1 = new Intent(this, AnActivity.class); startActivity(intent1); break; case R.id.button2: Intent intent2 = new Intent(this, AnotherActivity.class); startActivity(intent2); break; default: break; } 

Avantage : Gestion facile des boutons car tous les boutons sont enregistrés dans une seule méthode onClick()


Pour la deuxième partie de la question, transmettre des données, veuillez vous reporter à la section Comment puis-je transmettre des données entre les activités dans une application Android?

Lorsque l’utilisateur clique sur le bouton, directement à l’intérieur du XML, comme ceci:

  

En utilisant l’atsortingbut android:onClick nous déclarons le nom de la méthode qui doit être présent sur l’activité parent. Donc, je dois créer cette méthode dans notre activité comme ça:

 public void buttonClickFunction(View v) { Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class); startActivity(intent); } 
 Intent iinent= new Intent(Homeactivity.this,secondactivity.class); startActivity(iinent); 
  Intent in = new Intent(getApplicationContext(),SecondaryScreen.class); startActivity(in); This is an explicit intent to start secondscreen activity. 

Emmanuel,

Je pense que les informations supplémentaires doivent être placées avant de commencer 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); 

À partir de l’activité d’envoi, essayez le code suivant

  //EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE' public static final Ssortingng EXTRA_MESSAGE = "packageName.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { .... //Here we declare our send button Button sendButton = (Button) findViewById(R.id.send_button); sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //declare our intent object which takes two parameters, the context and the new activity name // the name of the receiving activity is declared in the Intent Constructor Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class); Ssortingng sendMessage = "hello world" //put the text inside the intent and send it to another Activity intent.putExtra(EXTRA_MESSAGE, sendMessage); //start the activity startActivity(intent); } 

À partir de l’activité de réception, essayez le code suivant:

  protected void onCreate(Bundle savedInstanceState) { //use the getIntent()method to receive the data from another activity Intent intent = getIntent(); //extract the ssortingng, with the getSsortingngExtra method Ssortingng message = intent.getSsortingngExtra(NewActivityName.EXTRA_MESSAGE); 

Ajoutez simplement le code suivant au fichier AndroidManifest.xml

  android:name="packagename.NameOfTheReceivingActivity" android:label="Title of the Activity" android:parentActivityName="packagename.NameOfSendingActivity" 
 Intent i = new Intent(firstactivity.this, secondactivity.class); startActivity(i); 

Essayez cette méthode simple

 startActivity(new Intent(MainActivity.this, SecondActivity.class)); 

La manière de démarrer de nouvelles activités consiste à diffuser une intention, et il existe un type d’intention spécifique que vous pouvez utiliser pour transmettre des données d’une activité à une autre. Je vous recommande de consulter les documents de développement Android relatifs aux intentions . c’est une mine d’informations sur le sujet et des exemples aussi.

Vous pouvez essayer ce code:

 Intent myIntent = new Intent(); FirstActivity.this.SecondActivity(myIntent); 

Le démarrage d’une activité à partir d’une autre activité est un scénario très courant parmi les applications Android.
Pour démarrer une activité, vous avez besoin d’un object [Intent][1] .

Comment créer des objects d’intention?

Un object intentionnel prend deux parameters dans son constructeur

  1. Le contexte
  2. Nom de l’activité à démarrer.

Exemple:

Par exemple, si vous avez deux activités, dites HomeActivity et DetailActivity et souhaitez démarrer DetailActivity partir de HomeActivity (HomeActivity -> DetailActivity).

Voici l’extrait de code qui montre comment démarrer DetailActivity à partir de

HomeActivity.

 Intent i = new Intent(HomeActivity.this,DetailActivity.class); startActivity(i); 

Et vous avez terminé.

Revenant à un clic sur un bouton.

 Button button = (Button) findViewById(R.id.someid); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(HomeActivity.this,DetailActivity.class); startActivity(i); } }); 

Commencez une autre activité à partir de cette activité et vous pouvez également passer des parameters via l’object Bundle.

 Intent intent = new Intent(getBaseContext(), YourActivity.class); intent.putExtra("USER_NAME", "xyz@gmail.com"); startActivity(intent); 

Resortingver des données dans une autre activité (YourActivity)

 Ssortingng s = getIntent().getSsortingngExtra("USER_NAME"); 

Implémentez l’interface View.OnClickListener et remplacez la méthode onClick.

 ImageView btnSearch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search1); ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch); btnSearch.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnSearch: { Intent intent = new Intent(Search.this,SearchFeedActivity.class); startActivity(intent); break; } 

Bien que des réponses correctes aient déjà été fournies mais je suis ici pour rechercher la réponse dans la langue Kotlin. Cette question ne concerne pas la langue, donc j’ajoute le code pour accomplir cette tâche dans le langage Kotlin.

Voici comment vous faites cela à Kotlin pour andorid

 testActivityBtn1.setOnClickListener{ val intent = Intent(applicationContext,MainActivity::class.java) startActivity(intent) } 

Prenez d’abord le bouton en xml.

   

Faites un listner de bouton.

  pre.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); 

Lorsque le bouton est cliqué:

 loginBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent= new Intent(getApplicationContext(), NextActivity.class); intent.putExtra("data", value); //pass data startActivity(intent); } }); 

Pour recevoir les données supplémentaires de NextActivity.class :

 Bundle extra = getIntent().getExtras(); if (extra != null){ Ssortingng str = (Ssortingng) extra.get("data"); // get a object } 

Écrivez le code dans votre première activité.

 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, SecondAcitvity.class); //You can use Ssortingng ,arraylist ,integer ,float and all data type. intent.putExtra("Key","value"); startActivity(intent); finish(); } }); 

Dans secondActivity.class

 Ssortingng name = getIntent().getSsortingngExtra("Key");