25

アプリケーションは次のようになります: MainActivity -> UserActivity -> DetailsActivity。(活動のおおよその順序)。

DetailsActivity(行の3番目のアクティビティ)で戻るボタンがクリックされたときにアプリケーションを閉じたいと思います。

それを行うのが良い習慣であるかどうか、またそれを行うための最良の方法は何ですか?

4

14 に答える 14

35

私の理解が正しければ、スタックが空でなくてもアクティビティを閉じたい、つまりスタックに複数のアクティビティがあるということですか?

1つしかない場合...ちょうど:

finish();

それ以外の場合のトリックは次のとおりです。

Intent intent = new Intent(Main.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

そして、同じアクティビティでonCreate:

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}

したがって、スタックをクリアしてから、残っている1つを殺します...これはどのアクティビティでも実行でき、もちろん次のアクティビティでも使用できますonBackPressed:)

于 2013-10-01T06:40:12.820 に答える
7

これを試して。

 quitBtn.setOnClickListener(new View.OnClickListener() {         
    @Override
    public void onClick(View paramView) 
  {
        finish();          
        moveTaskToBack(true);
    }
});
于 2014-09-06T10:00:34.647 に答える
6

noHistoryこれを試して、すべてのアクティビティごとに mainifest ファイルを追加してください。

android:noHistory="true"
于 2013-10-01T06:37:51.467 に答える
2

これは私にとってはうまくいきます:

public void onBackPressed(){
Intent a = new Intent(Intent.ACTION_MAIN);
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}
于 2015-10-29T21:27:11.513 に答える
1

最初のアクティビティのボタンが押されたときに別のアクティビティがどのように呼び出されるかを示す完全なクラスを次に示します。

public class FirstActivity extends Activity implements View.OnClickListener {

    Button goToSecondActivityButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.first_activity);

        ((TextView) findViewById(R.id.textRecommendationMessage)).setText("This is the first activity");

        goToSecondActivityButton= (Button) findViewById(R.id.button_go_to_second_activity);
        goToSecondActivityButton.setOnClickListener(this);
    }

     @Override
     public void onClick(View view) {

         goToSecondActivity();
    }

    private void goToSecondActivity() {

        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(intent);
        finish();
    }
}
于 2014-04-23T07:10:56.317 に答える