0

A->B->C->D アクティビティがあるとします。私はいつも C から抜け出したいですonBackPressed()

このような状況でアプリケーションを終了する方法。私は試しFLAG_ACTIVITY_CLEAR_TOPましたが、成功しませんでした。

私の最小 SDK はAPI 8.

4

8 に答える 8

3

このコードを使用します。

@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);
    }
于 2013-02-28T08:44:39.913 に答える
1

これを試してください:- アクティビティ 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);
}
于 2013-03-01T05:58:24.837 に答える
1

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() を呼び出す必要があります。

于 2013-02-28T09:03:30.647 に答える
0

戻るボタンが押された場合は、その機能をオーバーライドして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);
}
于 2013-02-28T08:43:27.087 に答える
0

メソッドを使用して current_activity を終了しますfinish();

次に、強制を削除するための current_activity の onDestroy に以下の行を追加します。

@Override
public void onDestroy()
{
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
}
于 2014-11-25T12:35:12.413 に答える
0

すでにポストタイムがあります:

http://developer.android.com/intl/es/reference/android/app/Activity.html

this.FinishAffinity();
于 2013-12-30T17:45:46.690 に答える