1

ログアウトオプションのあるActivity_Aがあります。それをクリックすると、ログインアクティビティを呼び出します。したがって、ログインアクティビティでデバイスの戻るボタンをクリックすると、ログアウトオプションがあるActivity_Aに戻ります。ログインアクティビティでデバイスの戻るボタンをクリックすると、デバイスのホーム画面に移動する必要があります。「アプリケーションを閉じる」や「アクティビティスタックをクリアする」など。

私はこれを試しました:

Intent intent = new Intent(Activity_A.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

しかし、それは機能しませんでした。上記のコードでfinish()を使用してみたところ、Activity_Aの前に呼び出したアクティビティに移動しました(予想どおり)。

私は自分のケースを検索しましたが、完璧な解決策を見つけることができませんでした。誰かが私が望んでいたことを達成するのを手伝ってくれませんか?

ログインアクティビティをクリックして、デバイスの戻るボタンonClickをオーバーライドして、デバイスのホーム画面を表示し、すべてのアクティビティスタックをクリアすることを考えています。はいの場合、それは安全ですか?

これは私がLoginActivityで行ったことであり、私が望んでいたように機能します

public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
}

しかし、onBackPressed()をオーバーライドせずにこれを達成する他の方法はありますか?

4

2 に答える 2

2

backボタンイベントをオーバーライドし、そこで必要なすべての操作を実行する必要があります。

@Override

    public void onBackPressed() {
       //do whatever you desire
       return;
    }
于 2012-06-22T08:39:39.883 に答える
1

startActivityForResultを使用してみてください

Activity_Aの場合:

Intent intent = new Intent(Activity_A.this, LoginActivity.class);
startActivityForResult(intent,0);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == 0) {
        this.finish();
    }
}

LoginActivityで:

LoginActivity.this.setResult(0);
于 2012-06-22T08:47:43.907 に答える