2013-02-25 3 views
2

У меня есть webView внутри макета деятельности. Если кнопка назад нажата, я хочу, чтобы посмотреть, чтобы исчезнуть и другие виды, чтобы стать видимыми, чтобы я сделал следующее:android - переопределение кнопки возврата

@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 раза. Мне нужно сохранить текущую активность и просто вызвать мои методы, упомянутые выше. Какие-либо предложения?

ответ

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; 
} 
+0

все. благодаря – Droidman

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); 
} 
1

Или просто использовать метод, onBackPressed() в youe Activity класс, это самый простой способ для переопределения.

1

Я думаю, что метод обратного вызова, который вы ищете, - onBackPressed.

Но ваше текущее решение должно работать также, вам просто нужно вернуть true внутри вашего if-блока, иначе событие будет распространено на другой обратный вызов.

Смежные вопросы