web-dev-qa-db-fra.com

android - Comment fermer une activité en cliquant sur le bouton?

Je veux cliquer sur un bouton pour fermer une activité. Je suis nouveau aux intentions et et un peu confus. C'est ActivityOne qui garde une trace du cycle de vie.
En appuyant sur un bouton, il ouvre ActivityTwo et met ActivityOne en arrière-plan.
Cela fonctionne très bien lorsque j'ai utilisé cette intention dans mon onClickListener:

Intent myIntent = new Intent(ActivityOne.this, ActivityTwo.class);
ActivityOne.this.startActivity(myIntent);

Dans ActivityTwo je dois utiliser des intentions et la méthode finish() pour fermer l'activité. J'ai essayé de Google et j'ai pensé que cela pourrait fonctionner:

Intent myIntent2 = new Intent(getApplicationContext(), ActivityTwo.class);
ActivityTwo.this.finish(myIntent2);

Cela n'a pas fonctionné, le code complet est ci-dessous:

public class ActivityOne extends Activity {

    // ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);

        // ...

        Button launchActivityTwoButton = (Button) findViewById(R.id.bLaunchActivityTwo); 
        launchActivityTwoButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO:
                // Launch Activity Two
                // Hint: use Context's startActivity() method

                // Create an intent stating which Activity you would like to start
                Intent myIntent = new Intent(ActivityOne.this, ActivityTwo.class);

                // Launch the Activity using the intent
                ActivityOne.this.startActivity(myIntent);               
            }
        });

        // ...
    }
}

Activité 2:

public class ActivityTwo extends Activity {    

    // ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);

        // ...

        Button closeButton = (Button) findViewById(R.id.bClose); 
        closeButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // TODO:
                // This function closes Activity Two
                // Hint: use Context's finish() method
                Intent myIntent2 = new Intent(getApplicationContext(), ActivityTwo.class);
                ActivityTwo.this.finish(myIntent2);
            }
        });
        // ...
    }
}
19
Arjun Krishnan

Vous souhaitez fermer ActivityTwo lorsqu'un bouton est cliqué? Utilisez simplement finish();

Le code complet de l'écouteur de bouton dans ActivityTwo serait:

Button closeButton = (Button) findViewById(R.id.bClose); 
closeButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        // TODO:
        // This function closes Activity Two
        // Hint: use Context's finish() method
        finish();
    }
});
45
Michael Yaworski

@Arjun Krishnan vous voulez tuer activityTwo?

essaye ça

 ActivityTwo.this.finish();

Cela vous aiderait

7
Namrata

La meilleure façon de terminer l'activité en cours est d'utiliser la méthode finish(). Donc, à l'intérieur de la onClick() de votre bouton dans la ActivityTwo, vous pouvez le faire.

closeButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
            //closes ActivityTwo
        }
});

pas besoin de faire de nouvelles intentions pour terminer l'activité en cours. Notez également que en appuyant sur , vous terminerez également votre activité.

4
SMR
Button exit= (Button) findViewById(R.id.yes);
exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity.this.finish();
            }
        });
1
Pacific P. Regmi

Remplacez ces deux lignes

Intent myIntent2=new Intent(getApplicationContext(),ActivityTwo.class); ActivityTwo.this.finish(myIntent2);

avec cette ActivityTwo.this.finish();

1
Waqas