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



Answers

Créez une intention pour une activité ViewPerson et transmettez 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);

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 pas parfois de données), puis récupérez 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 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
Question

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?




Démarrer 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 objet [Intent][1] .

Comment créer des objets Intent?

Un objet d'intention prend deux paramètres 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 vous voulez démarrer DetailActivity partir de HomeActivity (HomeActivity -> DetailActivity).

Voici l'extrait de code qui montre comment démarrer DetailActivity depuis

HomeActivité.

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

Et vous avez terminé.

Revenons à la partie clic sur le 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);  
      }

});



Bien que des réponses appropriées aient déjà été fournies mais je suis ici pour chercher la réponse dans la langue Kotlin. Cette question ne concerne pas la langue spécifique, donc j'ajoute le code pour accomplir cette tâche en langage Kotlin.

Voici comment vous faites cela à Kotlin pour andorid

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

 }



Lorsque l'utilisateur clique sur le bouton, directement dans le XML comme ça:

<Button
         android:id="@+id/button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="TextButton"
         android:onClick="buttonClickFunction"/>

En utilisant l'attribut android:onClick nous déclarons le nom de la méthode qui doit être présent sur l'activité parente. Je dois donc 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);
}



Essayez cette méthode simple.

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



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

    This is an explicit intent to start secondscreen activity.



La façon de démarrer de nouvelles activités consiste à diffuser une intention, et il existe un type spécifique d'intention que vous pouvez utiliser pour transmettre des données d'une activité à une autre. Ma recommandation est que vous consultez les docs de développeur Android liés aux intents ; c'est une mine d'informations sur le sujet, et a des exemples aussi.




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

                String 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 string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);

Ensuite, ajoutez simplement le code suivant au fichier AndroidManifest.xml

  android:name="packagename.NameOfTheReceivingActivity"
  android:label="Title of the Activity"
  android:parentActivityName="packagename.NameOfSendingActivity"



Related