web-dev-qa-db-fra.com

Android bouton onClickListener

J'essaie d'ouvrir un nouveau Activity en cliquant sur un bouton de ma méthode OnClickListener. Comment fonctionne la méthode OnClickListener et que faut-il y faire pour démarrer une nouvelle Activity?

16
AndroidFreak

Cette tâche peut être accomplie en utilisant l'un des principaux blocs de construction d'Android nommé Intents et l'une des méthodes public void startActivity (Intent intent) qui appartient à votre classe Activity.

Une intention est une description abstraite d'une opération à effectuer. Il peut être utilisé avec startActivity pour lancer une activité, broadcastIntent pour l'envoyer à tous les composants BroadcastReceiver intéressés et startService (Intent) ou bindService (Intent, ServiceConnection, int) pour communiquer avec un service d'arrière-plan.

Une intention fournit une fonction pour effectuer une liaison d'exécution tardive entre le code dans différentes applications. Son utilisation la plus importante est dans le lancement d'activités, où il peut être considéré comme la colle entre les activités. Il s'agit essentiellement d'une structure de données passive contenant une description abstraite d'une action à effectuer.

Reportez-vous aux documents officiels - http://developer.Android.com/reference/Android/content/Intent.html

public void startActivity (Intent intent) - Utilisé pour lancer une nouvelle activité.

Supposons donc que vous ayez deux classes d'activité -

  1. PresentActivity - Il s'agit de votre activité actuelle à partir de laquelle vous souhaitez passer à la deuxième activité.

  2. NextActivity - Ceci est votre prochaine activité sur laquelle vous souhaitez vous déplacer.

Donc, l'intention serait comme ça

Intent(PresentActivity.this, NextActivity.class)

Enfin ce sera le code complet

public class PresentActivity extends Activity {
  protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.content_layout_id);

    final Button button = (Button) findViewById(R.id.button_id);
    button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
              // Perform action on click   
              Intent activityChangeIntent = new Intent(PresentActivity.this, NextActivity.class);

              // currentContext.startActivity(activityChangeIntent);

              PresentActivity.this.startActivity(activityChangeIntent);
            }
          });
  }
}
37
Nikhil Agrawal
//create a variable that contain your button
Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new OnClickListener(){
        @Override
        //On click function
        public void onClick(View view) {
            //Create the intent to start another activity
            Intent intent = new Intent(view.getContext(), AnotherActivity.class);
            startActivity(intent);
        }
    });
13

Utilisez OnClicklistener ou vous pouvez utiliser Android:onClick="myMethod" dans le code xml de votre bouton à partir duquel vous allez ouvrir une nouvelle mise en page. Ainsi, lorsque vous cliquez sur ce bouton, votre fonction myMethod sera appelée automatiquement. Votre fonction myMethod en classe ressemble à ceci.

public void myMethod(View v) {
Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
}

Et dans ce SecondActivity.class définir une nouvelle disposition dans contentview.

4
Rahul

facile:

activité de lancement (gestionnaire onclick)

 Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
 myIntent.putExtra("key", value); //Optional parameters
 CurrentActivity.this.startActivity(myIntent);

sur la nouvelle activité:

@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.

et ajoutez votre nouvelle activité dans AndroidManifest.xml:

<activity Android:label="@string/app_name" Android:name="NextActivity"/>
2
Dory Zidon