当按下后退按钮时,让下面的应用程序显示错误时,我遇到了非常困难的时间。我想要的只是加载网页的网站和后退按钮,以便像往常一样执行。这里有人看错吗? LogCat没有显示任何错误,并且模拟器没有出现错误,但它总是在我的平板电脑上中断。
MyWebViewClient.java
package com.MySite;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
MySite.java
package com.mysite;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
public class MySite extends Activity {
WebView DCWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//init webview
WebView DCWebView = (WebView) findViewById(R.id.webview);
DCWebView.getSettings().setJavaScriptEnabled(true);
DCWebView.loadUrl("http://mobile.mysite.com");
//when a link is clicked, use the WebView instead of opening a new browser
DCWebView.setWebViewClient(new MyWebViewClient());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && DCWebView.canGoBack()) {
DCWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
答案 0 :(得分:1)
当你回到平板电脑上时,你得到了什么错误?您是否尝试覆盖onBackPressed而不是onKeyDown?
答案 1 :(得分:1)
您在DCWebView
内声明了一个名为onCreate()
的局部变量。改变行
WebView DCWebView = (WebView) findViewById(R.id.webview);
到
DCWebView = (WebView) findViewById(R.id.webview);
然后,当按下后退键时,会有一个后栈(当你拨打DCWebView.canGoBack()
时,它当前是假的,因为你的全局DCWebView
从未初始化),后退按钮将是按照你期望的方式处理。