Android WebApp部队关闭后退按钮
问题描述:
我有一个网络应用程序,我正在使用jQuery Mobile来制作移动兼容页面版本的CMS。基本登录页面本地存储在手机上。Android WebApp部队关闭后退按钮
public class WebAppActivity extends Activity {
WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Point to the content view defined in XML
setContentView(R.layout.main);
// Configure the webview setup in the xml layout
WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webView.getSettings();
// Yes, we want javascript, pls.
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/www/webapp.html");
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});
}
@Override
public void onBackPressed()
{
if(webView.canGoBack())
{
webView.goBack();
}else{
super.onBackPressed();
}
}
}
和的logcat的说:
03-29 15:31:47.354: E/AndroidRuntime(430): FATAL EXCEPTION: main
03-29 15:31:47.354: E/AndroidRuntime(430): java.lang.NullPointerException
03-29 15:31:47.354: E/AndroidRuntime(430): at com.package.mobile.android.webapp.onBackPressed(WebApp.java:223)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.Activity.onKeyUp(Activity.java:1898)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.KeyEvent.dispatch(KeyEvent.java:1280)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1663)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.handleMessage(ViewRoot.java:1867)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.os.Handler.dispatchMessage(Handler.java:99)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.os.Looper.loop(Looper.java:123)
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-29 15:31:47.354: E/AndroidRuntime(430): at java.lang.reflect.Method.invokeNative(Native Method)
03-29 15:31:47.354: E/AndroidRuntime(430): at java.lang.reflect.Method.invoke(Method.java:507)
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-29 15:31:47.354: E/AndroidRuntime(430): at dalvik.system.NativeStart.main(Native Method)
我一直在试图解决这个问题,在过去一周左右,似乎如果网页流量不作为建立一个历史回溯。在返回按钮的按下
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
答
NullPointerException
是因为您的webView
是onCreate
中的局部变量,并且webView
类成员变量未分配。
题外话:我不会谈论纯基于WebView的应用程序的长篇大论,但我们只是说你不应该这样做。如果你绝对必须出于某种原因或其他原因,那么你应该确保处理方位变化。
答
你需要重写后退按钮默认行为,这是由
@Override
public void onBackPressed() {
return;
}
在应用程序中的主要活动取得
答
试试这个您应该致电
finish();
+0
上面的代码示例链接[http://developer.android.com/resources/tutorials/views/hello-webview.html](http://developer.android.com/resources/tutorials/views/hello -webview.html) – 2012-03-29 16:12:18
答
:
我知道,我个人想采取不同的方法,但我被否决了。 – user800360 2012-03-29 17:05:14