2

webViewアクティビティのレイアウトの中にあります。戻るボタンを押すと、そのビューが消え、他のビューが表示されるようになり、次のようになりました。

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && web.getVisibility()==View.VISIBLE) {
        restoreInitalState(); // set Visibility of Views
        APP_CONSTANTS.LOGIN_OP_CANCELLED(getApplicationContext()); // inform the user that the current operation was cancelled
    }
    return super.onKeyDown(keyCode, event);

}

動作しますが、戻るボタンが2回押された場合のように、メソッドを呼び出した直後にアクティビティを終了します。現在のアクティビティを保持し、上記のメソッドを呼び出すだけです。助言がありますか?

4

4 に答える 4

3

false を返す必要があります。これを変える:

if (keyCode == KeyEvent.KEYCODE_BACK && web.getVisibility()==View.VISIBLE) {
    restoreInitalState(); // set Visibility of Views
    APP_CONSTANTS.LOGIN_OP_CANCELLED(getApplicationContext()); // inform the user that the current operation was cancelled
}

これに:

if (keyCode == KeyEvent.KEYCODE_BACK && web.getVisibility()==View.VISIBLE) {
    restoreInitalState(); // set Visibility of Views
    APP_CONSTANTS.LOGIN_OP_CANCELLED(getApplicationContext()); // inform the user that the current operation was cancelled
    return false;
}
于 2013-02-25T17:47:29.527 に答える
1

またはonBackPressed()、youeActivityクラスでメソッドを使用するだけで、それをオーバーライドする最も簡単な方法です。

于 2013-02-25T17:51:35.353 に答える
1

正しい方法は次のとおりだと思います。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && web.getVisibility()==View.VISIBLE) {
        restoreInitalState(); // set Visibility of Views
        APP_CONSTANTS.LOGIN_OP_CANCELLED(getApplicationContext()); 
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
于 2013-02-25T17:49:33.623 に答える
1

お探しのコールバック メソッドはonBackPressed.

ただし、現在のソリューションも同様に機能するはずです。if ブロック内で true を返す必要があるだけです。そうしないと、イベントが別のコールバックに伝播されます。

于 2013-02-25T17:54:38.503 に答える