我正在构建一个应用程序,其中包含使用ActionBarSherlock标签栏交换的一堆片段。其中一个片段只是一个WebView,它显示了他们在线商店的移动版本。
该商店的网站为主页加载OK,但是只要点击任何链接,应用程序就会崩溃(在ICS上测试时,4.0.3)。
这是我用来设置网络视图的代码:
// Set the web view
WebView webView = (WebView)rootView.findViewById(R.id.shop_webview);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptEnabled(true);
webView.loadUrl(shopUrl);
这是应用崩溃时LogCat中出现的错误:
10-26 21:39:05.565: ERROR/AndroidRuntime(11021): FATAL EXCEPTION: main
java.lang.NullPointerException
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:876)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Manifest(根据评论中的要求),请注意显示webview的活动是在RootActivity中管理的片段:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="au.com.client.android" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application android:name=".App" android:label="@string/app_name" android:icon="@drawable/app_icon" android:logo="@drawable/logo">
<activity android:name="au.com.client.whitelabel.android.LaunchActivity" android:label="@string/app_name" android:theme="@style/Theme.Client" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps"/>
<activity android:name="au.com.client.whitelabel.android.RootActivity" android:label="@string/app_name" android:theme="@style/Theme.Client" android:screenOrientation="portrait" />
<activity android:name="au.com.client.whitelabel.android.SettingsActivity" android:label="@string/app_name" android:screenOrientation="portrait" />
<activity android:name="au.com.client.whitelabel.android.LoginActivity" android:windowSoftInputMode="stateHidden" android:configChanges="orientation|keyboardHidden" android:theme="@style/Theme.Client" android:screenOrientation="portrait" />
</application>
</manifest>
我知道,继续下去并不多。我担心网上商店正在为移动网站使用某种框架,这种框架依赖于手机上完整浏览器提供的功能,但在小型WebView中不受支持。提前感谢您的帮助......
答案 0 :(得分:1)
我意识到这个问题中的信息有点半生不熟,但最后解决方案很简单,只是补充说:
webView.setWebViewClient(new WebViewClient());
我不知道为什么会这样 - 我假设在创建WebView时附加了一个默认的WebViewClient
。希望这可以帮助某些人在以后堵塞。