2012-05-07 3 views
1

Я просмотрел весь этот сайт, google и другой форум для Android, но я не могу найти тот, который работает.Как включить клавишу BACK в Android WebView

Я пытаюсь включить ключ BACK в приложение Android WebView, потому что иначе клавиша BACK просто прекращает действие.

Я новичок в Android, поэтому я не знаю, все, что нужно для его программирования. Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?

Спасибо!

+0

Уже был дан ответ: http://stackoverflow.com/questions/6077141/android-webview-how-to-code-the-back-button/6077173#6077173 – FoamyGuy

ответ

4

перехватывать кнопку Назад в Activity следующим образом ...

public class MyWebActivity extends Activity { 

    WebView webview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // Other code here 
     webview = new WebView(this); 
    } 

    // Other methods here 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
      webview.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

Разъяснения в части 9 Hello WebView Tutorial

+0

У меня проблема с этим, но он выглядит как он должен работать. Когда я помещаю этот код в свою деятельность, он дает мне ошибку в части веб-просмотра кода, который вы указали. Я попытался использовать WebViewClient и MyWebViewClient, чтобы заставить его работать (они оба уже находятся в моем коде), и все, что он делает, дает мне еще одну ошибку в .canGoBack() и .goBack(). У кого-нибудь есть идеи? – SMOKE

+0

@SMOKE: Вы посмотрели учебник, на который я ссылался в своем ответе? В моем отрывке кода выше 'webview' является экземпляром класса' WebView', а не 'WebViewClient'. См. Мой отредактированный пример кода в моем ответе. – Squonk

+0

Это больше не дает мне ошибку, но после тестирования приложения она не работает :(Я добавил свою активность .Java, чтобы вы могли посмотреть. Возможно, я сделал что-то еще не так в моем коде? – SMOKE

0

Для примера я делаю следующий ловя URL в моей WebView над Android;

В вашем методе shouldOverrideUrlLoading:

public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       view.loadUrl(url); 
       webView.getUrl(); 
       if(url.equals("http://any.com/url")){ 
        //Do any action 
        Toast tr =Toast.makeText(WebViewTest.this, "Test Passed", Toast.LENGTH_LONG); 
        tr.show(); 
        //Go to other activity or you can put finish(); to stop the actual activity 
        //Do other action 
        Intent i1 = new Intent("com.mypack.courses.Passed"); 
        startActivity(i1);; 
        return true; 
       } 
       if(url.equals("http://any.com/url")){ 
        Toast tr =Toast.makeText(WebViewTest.this, "Test Failed", Toast.LENGTH_LONG); 
        tr.show(); 

        Intent i2 = new Intent("com.mypack.courses.Failed"); 
        startActivity(i2); 
        return true; 
       } 
       return true; 
      } 

в этом случае, если пользователь щелкнет в «» http://any.com/url»над WebView, мы какие-либо действия, просто положить Ваши условия и методы, и везде, где вы хотите, чтобы сделать там, надеюсь, что это даст вам идеи ...

1

переопределение onbackpressed в вашей деятельности.

@Override 
public void onBackPressed() { 

} 

Если вы не хотите, чтобы закрыть свою деятельность на спине нажмите, тогда вы можете просто удалить super.onBackPressed(), это не позволит завершить вашу деятельность, и ваша деятельность будет работать правильно при нажатии, не закрывая.

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