web-dev-qa-db-fra.com

Comment ouvrir une deuxième activité en cliquant sur le bouton dans l'application Android

J'apprends à créer des applications Android et j'ai besoin d'une aide spécifique. Je n'arrive pas à me demander quels morceaux de code de gabarit je dois changer et quels bits sont statiques.

Dans le dossierLAYOUTj'ai mon ACTIVITY_MAIN.XML qui lit

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
 xmlns:tools="http://schemas.Android.com/tools"
 Android:layout_width="match_parent"
 Android:layout_height="match_parent"
 Android:orientation="horizontal">

 <Button
    Android:id="@+id/button1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="@string/main_buttons_photos" />

 </LinearLayout>

Ensuite, j'ai ma deuxième activité ACTIVITY_SEND_PHOTOS.XML qui est

 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
 xmlns:tools="http://schemas.Android.com/tools"
 Android:layout_width="match_parent"
 Android:layout_height="match_parent" >

 <TextView
    Android:id="@+id/textView2"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerHorizontal="true"
    Android:layout_centerVertical="true"
    Android:text="@string/hello_world"
    tools:context=".SendPhotos" />

 <TextView
    Android:id="@+id/textView1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentTop="true"
    Android:text="@string/title_activity_send_photos"
    Android:textAppearance="?android:attr/textAppearanceLarge" />

 </RelativeLayout>

J'ai alors mon MainActivity.Java (est-ce la classe?) Qui lit package com.example.assent.bc;

 import Android.os.Bundle;
 import Android.app.Activity;
 import Android.view.Menu;
 import Android.view.View;

 public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.activity_main, menu);
     return true;
 }
 /** Called when the user clicks the Send button */
 public void sendMessage(View view) {
     // Do something in response to button
 }
 }

et ensuite mon SendPhotos.Java fichier qui est;

 package com.example.assent.bc;

 import Android.os.Bundle;
 import Android.app.Activity;
 import Android.view.Menu;
 import Android.view.MenuItem;
 import Android.support.v4.app.NavUtils;

 public class SendPhotos extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send_photos);
    getActionBar().setDisplayHomeAsUpEnabled(true);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_send_photos, menu);
    return true;
 }


 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case Android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
 }

 }

Je voudrais que le bouton de mon activité principale soit lié à mon activité sendphotos, en ouvrant simplement cette activité, rien d’extraordinaire, en n’envoyant aucune donnée ni rien.

Je sais que quelque part j'ai besoin de mon 

 Intent i = new Intent(FromActivity.this, ToActivity.class);
 startActivity(i);

mais je ne sais pas quoi remplacer ToActivity.class with ou quoi d'autre il me faut où.

79
Henry Aspden

Vous pouvez passer à l'activité souhaitée en cliquant sur le bouton. ajoutez simplement Android:onClick="sendMessage"cette ligne.

xml:

 <Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="sendMessage"
        Android:text="@string/button" />

Dans votre activité principale, ajoutez simplement cette méthode:

public void sendMessage(View view) 
{
    Intent intent = new Intent(FromActivity.this, ToActivity.class);
    startActivity(intent);
}

Et le plus important: n'oubliez pas de définir votre activité dans manifest.xml

 <activity
      Android:name=".ToActivity"
      Android:label="@string/app_name">          
 </activity>
133
Juned

Essaye ça

  Button button;

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent(getApplicationContext(),SendPhotos.class);
                        startActivity(i);
                    }
                });

 }
29
J.D.

De l'activité: où êtes-vous actuellement?

Pour l'activité: où veux-tu aller?

Intent i = new Intent( MainActivity.this, SendPhotos.class); startActivity(i); 

Les deux activités doivent être incluses dans le fichier manifeste, sinon le fichier de classe ne sera pas trouvé et la fonction Force close.

Editez votre Mainactivity.Java 

crate button's object;

maintenant Écrivez le code pour l'événement click.

        Button btn = (button)findViewById(R.id.button1);
         btn.LoginButton.setOnClickListener(new View.OnClickListener() 
       {

                @Override
                public void onClick(View v) 
                {
                 //put your intent code here
                }
   });

J'espère que cela fonctionnera pour vous.

10
Chintan Khetiya
Button btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(MainActivity.this, MainActivity2.class);
        MainActivity.this.startActivity(myIntent);       
    }  
});

La réponse du noob complet à un noob complet: MainActivity est le nom de la première activité .MainActivity2 est le nom de la deuxième activité .button1 est l'ID du bouton en xml pour MainActivity .

9

il suffit de suivre cette étape (je ne suis pas en train d’écrire du code mais Bcoz, vous pouvez copier-coller et apprendre).

  1. tout d'abord vous devez déclarer un bouton que vous avez en disposition

  2. Donnez une référence à ce bouton en trouvant son identifiant (à l'aide de findviewById) dans oncreate 

  3. setlistener pour le bouton (comme l'écouteur setonclick)

  4. dernière manipulation de l'événement click (signifie démarrer une nouvelle activité en utilisant l'intention que vous connaissez déjà)

  5. N'oubliez pas d'ajouter l'activité dans le fichier manifeste

BTW c'est juste simple, je voudrais vous suggérer de commencer à partir de simples tutoriels disponibles Sur le net sera mieux pour vous ..

Meilleure chance pour Android 

4
Kalpesh Lakhani

Remplacez le code de ligne ci-dessous:

import Android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener{
   Button button;
    @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(this);
      }
       public void onClick(View v) {
        if(v.getId==R.id.button1){
      Intent i = new Intent(FromActivity.this, ToActivity.class);
               startActivity(i);
            }
        }
     }

Ajoutez les lignes ci-dessous dans votre fichier manifeste:

   <activity Android:name="com.packagename.FromActivity"></activity>
   <activity Android:name="com.packagename.ToActivity"></activity>
2
Avadhani Y

Remplacez votre MainActivity.class par ce code

public class MainActivity extends Activity {

Button b1;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 b1=(Button)findViewById(R.id.button1);
 b1.setOnClickListener(new View.onClickListener()
 {
  public void onClick(View v)
   {
       Intent i=new Intent(getApplicationContext(),SendPhotos.class);
       startActivity(i);
    }
 }
 )
}

Ajoutez ce code dans votre AndroidManifest.xml après le </activity> et avant le </application>

<activity Android:name=".SendPhotos"></activity>
2
Vikalp Patel

Cela fonctionne toujours, l'un ou l'autre devrait être parfait:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick (View v) {
            startActivity(new Intent("com.tobidae.Activity1"));
        }
        //** OR you can just use the one down here instead, both work either way
        @Override
        public void onClick (View v){
            Intent i = new Intent(getApplicationContext(), ChemistryActivity.class);
            startActivity(i);
        }
    }
}
1
Tobidae

ajoutez le code ci-dessous au fichier activity_main.xml:

<Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="buttonClick"
        Android:text="@string/button" />

et ajoutez simplement la méthode ci-dessous au fichier MainActivity.Java:

public void buttonClick(View view){
  Intent i = new Intent(getApplicationContext()SendPhotos.class);
  startActivity(i);
}
1
Md Nakibul Hassan
 <Button
            Android:id="@+id/btnSignIn"
            Android:layout_width="250dp"
            Android:layout_height="40dp"
            Android:layout_marginEnd="8dp"
            Android:layout_marginLeft="8dp"
            Android:layout_marginRight="8dp"
            Android:layout_marginStart="8dp"
            Android:layout_marginTop="16dp"
            Android:background="@drawable/circal"
            Android:text="Sign in"
            Android:textColor="@color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/etPasswordLogin" />

EN CODE Java

Button signIn= (Button) findViewById(R.id.btnSignIn);

signIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(SignInPage.this,MainActivity.class));
            }
        });

}

0
Rana Umerfarooq

Si vous avez deux boutons et que le même identifiant appelle votre bouton, cliquez sur des événements comme celui-ci:

Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1= (Button)findViewById(R.id.button1);

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

    btn2=(Button) findViewById(R.id.button1);//Have same id call previous button---> button1

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

Lorsque vous avez cliqué sur button1, button2 fonctionnera et vous ne pourrez pas ouvrir votre deuxième activité.

0
Serdar Günaydın

Vous pouvez passer à l'activité souhaitée en cliquant sur le bouton. il suffit d'ajouter
Android: onClick = "timerApp" cette ligne.

xml:

 <Button
        Android:id="@+id/timer_app"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="timerApp"
        Android:text="Click To run Timer Activity" />

In your main activity just add this method:

 public void timerApp(View view){
        Intent intent= new Intent(MainActivity.this,TimerActivity.class);
        startActivity(intent);
    }

OU dans la méthode onCreate (), ajoutez le code ci-dessous

Button btn =findViewById(R.id.timer_app);//Don't need to type casting in Android studio 3

btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, TimerActivity.class);
        startActivity(intent);       
    }  
});
0
Sani Kamal