アプリケーションは次のようになります: MainActivity -> UserActivity -> DetailsActivity。(活動のおおよその順序)。
DetailsActivity(行の3番目のアクティビティ)で戻るボタンがクリックされたときにアプリケーションを閉じたいと思います。
それを行うのが良い習慣であるかどうか、またそれを行うための最良の方法は何ですか?
アプリケーションは次のようになります: MainActivity -> UserActivity -> DetailsActivity。(活動のおおよその順序)。
DetailsActivity(行の3番目のアクティビティ)で戻るボタンがクリックされたときにアプリケーションを閉じたいと思います。
それを行うのが良い習慣であるかどうか、またそれを行うための最良の方法は何ですか?
私の理解が正しければ、スタックが空でなくてもアクティビティを閉じたい、つまりスタックに複数のアクティビティがあるということですか?
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
:)
これを試して。
quitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View paramView)
{
finish();
moveTaskToBack(true);
}
});
noHistory
これを試して、すべてのアクティビティごとに mainifest ファイルを追加してください。
android:noHistory="true"
これは私にとってはうまくいきます:
public void onBackPressed(){
Intent a = new Intent(Intent.ACTION_MAIN);
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}
最初のアクティビティのボタンが押されたときに別のアクティビティがどのように呼び出されるかを示す完全なクラスを次に示します。
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();
}
}