A->B->C->D アクティビティがあるとします。私はいつも C から抜け出したいですonBackPressed()
。
このような状況でアプリケーションを終了する方法。私は試しFLAG_ACTIVITY_CLEAR_TOP
ましたが、成功しませんでした。
私の最小 SDK はAPI 8
.
A->B->C->D アクティビティがあるとします。私はいつも C から抜け出したいですonBackPressed()
。
このような状況でアプリケーションを終了する方法。私は試しFLAG_ACTIVITY_CLEAR_TOP
ましたが、成功しませんでした。
私の最小 SDK はAPI 8
.
このコードを使用します。
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
super.onBackPressed();
finish();
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);
}
これを試してください:- アクティビティ A では、
startActivity(new Intent("B"),request_code);
onActivityResult() 関数では、
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_code)
{
if(resultCode == RESULT_OK)
{
finish();
}
}
}
アクティビティ B では、
startActivity(new Intent("C"),request_code);
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_code)
{
if(resultCode == RESULT_OK)
{
setResult(RESULT_OK);
finish();
}
}
}
最後にアクティビティ C で、
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
setResult(RESULT_OK);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
C で onBackPressed() のみを終了したい場合は、アクティビティ A、B、および D で onBackPressed() をオーバーライドするだけです。
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
}
これにより、A、B、D で戻るキーが押されたときに、アプリケーションが閉じないことが保証されます。Android はデフォルトで finish() を呼び出すため、アクティビティ C で onBackPressed() をオーバーライドする必要はありません。ただし、アラート ダイアログをポップアップ表示する場合は、次のようにします。
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertbox.setTitle("Are you sure you want to exit the application");
alertbox.setCancelable(false);
alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
finish();
}
});
alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
alertbox.show();
}
最後に、C でアクティビティを終了しようとしたときに以前のアクティビティが閉じられるようにするには、新しいアクティビティを開始するたびに finish() を呼び出す必要があります。
戻るボタンが押された場合は、その機能をオーバーライドしてActivity C
アプリケーションを終了できます。これを試して:-
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) { //Back key pressed
//To Do - Exit App in your case
return true;
}
return super.onKeyDown(keyCode, event);
}
メソッドを使用して current_activity を終了しますfinish();
次に、強制を削除するための current_activity の onDestroy に以下の行を追加します。
@Override
public void onDestroy()
{
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
}
すでにポストタイムがあります:
http://developer.android.com/intl/es/reference/android/app/Activity.html
this.FinishAffinity();