2016-03-13 137 views
0

我无法实现在WebView中的Android上调用Back按钮。我试着用OnKeyDownOnKeyOnBackPressed 我当前的代码如下:WebView中的OnKeyDown事件未处理 - Android

public class MainActivity extends AppCompatActivity { 
    final Activity activity = this; 
    private WebView mWebView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     mWebView.loadUrl("file:///android_asset/index.html"); 

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

} 

错误说,功能OnKeyDown没有实现......你知道吗? 真的谢谢:)很多

回答

1

试试这个代码

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (event.getAction() == KeyEvent.ACTION_DOWN) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      if (mWebView.canGoBack()) { 
       mWebView.goBack(); 
      } else { 
       finish(); 
      } 
      return true; 
    } 

} 
return super.onKeyDown(keyCode, event); 
} 

更新:如果上面的代码中失败,请尝试以下

@Override 
public void onBackPressed() 
{ 

    if (mWebView.canGoBack()) { 
      mWebView.goBack(); 
     } else { 
      finish(); 
     }  
} 
+0

谢谢,我尝试,但错误依然是:未实现的WebView的方法OnKeyDown调用从:android.webkit.WebView.onKeyDown(WebView.java:2178)@salih kallai –

+0

尝试删除您的webview的私人修改器,可能是工作 –

+0

同样的事情,不知道... –