1

電話の戻るボタンは私を困惑させました。この質問は何度も聞かれましたが、私は解決策を持っていません。だから私の要件に従ってもう一度尋ねます。

ホーム画面のアクティビティがあります。3つのアクティビティを呼び出します。これにより、それぞれ2つのアクティビティが呼び出されます。

私がこのようにナビゲートすると仮定します

ホーム>Act1>SubAct1a> SubAct1b>ホーム(ホームボタンを使用)>Act2>ホーム>Act3

Act3では、電話の戻るボタンを押すと、ホームに移動します。この時点での私の要件は、戻るボタンをもう一度押すと、アプリを終了する必要があります。しかし、どうなるかはこのようになります

Act2>ホーム>SubAct1b>SubAct1a>Act1>ホーム>EXIT

そのため、ユーザーはアプリを終了する前にBACKを複数回押しています。

HOMEキーを押すのはオプションですが、BACKも正しく機能させたいです。

HOMEアクティビティにこのコードがありますが、まったく機能しません

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        System.exit(0);
    }

    return super.onKeyDown(keyCode, event);
}

以前のアクティビティに戻るだけです。

4

4 に答える 4

2

trueを返して、この状況をすでに処理したことをシステムに通知する必要があります。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        System.exit(0);
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

ホームアクティビティを開始するときは、クリアトップフラグを設定してみてください...

Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-10-29T08:21:47.573 に答える
1

これをonCreate()に追加してみてください

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-10-29T08:34:03.347 に答える
0

これを試して:

@Override
public void onBackPressed()
{
    Intent i=new Intent(currentclass.this,Home.class)
    startActivity(i);
    finish();
    super.onBackPressed();
}
于 2012-10-29T08:28:13.637 に答える
0

あるアクティビティから別のアクティビティに移動している間に、前のアクティビティを終了します。それで

ユーザーが戻るボタンを上書きして現在のアクティビティを終了すると、問題は解決すると思います。

Intent intent = new Intent(currentclass.this, Act1.class)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

そして最後に

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
    }

    return true;
}
于 2012-10-29T08:38:40.660 に答える