1

我無法獲得android手機上的硬件返回鍵以使用webView。以下是我正在使用的代碼。每次運行應用程序時,它都會關閉。在android webview中的後退按鈕?

package com.knowideas.transithub; 
import android.app.Activity; 

import android.os.Bundle; 

import android.os.Handler; 

import android.util.Log; 

import android.view.KeyEvent; 

import android.webkit.WebChromeClient; 

import android.webkit.WebSettings; 

import android.webkit.WebView; 

import android.webkit.WebViewClient; 

public class WebViewDemo extends Activity { 

    private static final String LOG_TAG = "WebViewDemo"; 

    private WebView mWebView; 

    private Handler mHandler = new Handler(); 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // Check if the key event was the BACK key and if there's history 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     // If it wasn't the BACK key or there's no web page history, bubble up to the default 
     // system behavior (probably exit the activity) 
     return super.onKeyDown(keyCode, event); 
    } 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     mWebView = (WebView) findViewById(R.id.webView); 

     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setSavePassword(false); 
     webSettings.setSaveFormData(false); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setSupportZoom(false); 

     mWebView.setWebChromeClient(new WebChromeClient()); 

     mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo"); 

     mWebView.loadUrl("file:///android_asset/demo.html"); 
    } 

    final class DemoJavaScriptInterface { 

     DemoJavaScriptInterface() { 
     } 

     /** 
     * This is not called on the UI thread. Post a runnable to invoke 
     * loadUrl on the UI thread. 
     */ 
     public void clickOnAndroid() { 
      mHandler.post(new Runnable() { 
       public void run() { 
        mWebView.loadUrl("javascript:wave()"); 
       } 
      }); 

     } 
    } 
} 
+0

你的logcat說什麼?拋出什麼異常? – Otra

+0

添加一些LogCat輸出 – Jayp

+0

請參閱http://developer.android.com/guide/tutorials/views/hello-webview.html關於如何使用後退按鈕處理創建基本webview –

回答

2

這裏是我的猜測:

你試圖抓住關鍵事件爲時已晚。你需要在它進入web視圖之前抓住它。你可以通過設置onKeyListener來實現。

方法如下:

mWebView.setOnKeyListener(new OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
        // ignore the back key 
       return true; 
      } 
      // process normally 
      return false; 
     } 
    }); 

我不能做更多的只是「塊」它 - 這就是我試圖找出另一個問題。

最佳

-Yaakov

0

背部PRESSED

//所以鏈接留在裏面的WebView webview.setWebViewClient(新WebViewClient());

webview.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View view, int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      WebView webView = (WebView) view; 

      switch (keyCode) { 
       case KeyEvent.KEYCODE_BACK: 
        if (webView.canGoBack()) { 
         webView.goBack(); 
         return true; 
        } 
        break; 
      } 
     } 
     return false; 
    } 
});