Android keycode_back закрывает приложение - PullRequest
0 голосов
/ 01 сентября 2011

Я хочу, чтобы кнопка «Назад» на телефоне Android действовала как кнопка «Назад» для моего веб-браузера. В настоящее время он закрывает приложение, а не возвращается к предыдущему экрану.

Я написал этот невероятно уродливый хак, чтобы обойти это следующим образом:

Стек стека = новый стек ();

и каждый раз, когда загружается новое веб-представление, я сохраняю его в стеке, используя

stack.push(url);

@Override     
         public boolean onKeyDown(int keyCode, KeyEvent event) {          
             // Back?         
             if (keyCode == KeyEvent.KEYCODE_BACK) {             
                     // Back             
                     String url = stack.pop();               
                     if(url.indexOf("index.html")>0)stack.push("file:///android_asset/index.html");
                     this.loadUrl(url);
                 }          
             // Return         
             return true;   
             }

Теперь я действительно хочу сделать это способом Android, но понятия не имею, как этого добиться ...

Любая помощь будет наиболее ценной.

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event)  {    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {        // do something on back.        return true;    }    return super.onKeyDown(keyCode, event);}

с

@Overridepublic void onBackPressed() {// do something on back.return;}

не работает для меня, и я не знаю, почему (грустное лицо андроида)

1 Ответ

0 голосов
/ 01 сентября 2011

Вы можете сделать это так:

private WebView webView;

...

webView = (WebView) findViewById(R.id.webview);

...

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView != null && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
...