2013-02-15 141 views
4

在「後退」按鈕在webview中工作時出現問題。爲什麼Back按鈕不能在這個Android webview中工作?

我不知道在哪裏的代碼,我應該把onKeyDown()部分(目前正在最後@Override

兩個mywebview.canGoBack()mywebview.goBack()導致錯誤說「mywebview解決不了」。

如果我一直移動支架mywebview.setWebClient(...)後的底部,mywebview-error消失,但隨後overrideonKeyDownreturn true,並且return super結果在所有類型的錯誤。

有誰能告訴我該怎麼辦?

代碼:

package com.sib; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.KeyEvent; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class SiB extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sib); 

     WebView mywebview = (WebView) findViewById(R.id.webview); 
     mywebview.loadUrl("url"); 

     WebSettings webSettings = mywebview.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     mywebview.setWebViewClient(new WebViewClient()); 

    } 


    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview.canGoBack()) { 
      mywebview.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

回答

2

的onkeydown不適合回來工作。你需要重寫onBackPressed。

+0

非常感謝您的快速響應!現在就開始工作吧!非常感謝 – user2076551 2013-02-15 18:58:16

3

使mywebview成爲類實例變量。

public class SiB extends Activity { 
WebView mywebview; 

然後確保不被取出申報onCreate()它應該是這樣的影子吧:

mywebview = (WebView) findViewById(R.id.webview); 
mywebview.loadUrl("url"); 

而基於what I can find,加布是正確的。用於背壓的onKeyDown()僅適用於API 4及更低版本。 onBackPressed()應該比API 4更新。

@Override 
public void onBackPressed(){ 

    if (mywebview.canGoBack()) { 
     mywebview.goBack(); 
     return; 
    } 
    super.onBackPressed();  
} 
+1

非常感謝您的快速響應!你們倆。現在就開始工作吧!非常感謝 – user2076551 2013-02-15 18:58:45

+0

@ user2076551由於您的問題已解決,您應該[接受其中一個答案](http://meta.stackexchange.com/a/5235/202881)。 – 2013-03-05 00:12:41

相關問題