【发布时间】:2016-05-10 13:49:19
【问题描述】:
我的应用程序中有一个 webview 必须加载图像,它可以很好地加载,但是它需要几秒钟才能显示。所以我需要做的是显示一个进度对话框来通知用户页面正在加载。 (这张图片是从资产文件夹而不是从网络加载的)所以这是我到目前为止的代码,但是当我尝试运行该活动时崩溃了。
public MapsFragment(){}
ProgressDialog progress;
WebView myWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
WebView webview = (WebView)rootView.findViewById(R.id.webView2);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setUseWideViewPort(false);
webview.loadUrl("file:///android_asset/index1.html");
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progress.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progress.dismiss();
}
});
return rootView;
}
}
然后这个错误代码是:
11-08 13:19:34.034: E/AndroidRuntime(20600): FATAL EXCEPTION: main
11-08 13:19:34.034: E/AndroidRuntime(20600): Process: com.test.testguide, PID: 20600
11-08 13:19:34.034: E/AndroidRuntime(20600): java.lang.NullPointerException
11-08 13:19:34.034: E/AndroidRuntime(20600): at com.test.testguide.MapsFragment$1.onPageFinished(MapsFragment.java:42)
11-08 13:19:34.034: E/AndroidRuntime(20600): at com.android.webview.chromium.WebViewContentsClientAdapter.onPageFinished(WebViewContentsClientAdapter.java:449)
11-08 13:19:34.034: E/AndroidRuntime(20600): at com.android.org.chromium.android_webview.AwContentsClient$AwWebContentsObserver$1.run(AwContentsClient.java:73)
11-08 13:19:34.034: E/AndroidRuntime(20600): at android.os.Handler.handleCallback(Handler.java:733)
11-08 13:19:34.034: E/AndroidRuntime(20600): at android.os.Handler.dispatchMessage(Handler.java:95)
11-08 13:19:34.034: E/AndroidRuntime(20600): at android.os.Looper.loop(Looper.java:136)
11-08 13:19:34.034: E/AndroidRuntime(20600): at android.app.ActivityThread.main(ActivityThread.java:5586)
11-08 13:19:34.034: E/AndroidRuntime(20600): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 13:19:34.034: E/AndroidRuntime(20600): at java.lang.reflect.Method.invoke(Method.java:515)
请帮忙,因为我用谷歌搜索了很多关于此的问题,但似乎找不到解决方案。
谢谢!
编辑
我已通过 myWebView 更正错误并改回 webview,从而导致新的错误。请查看更新的问题
EDIT2
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progress = new ProgressDialog(getActivity());
progress.setMessage("Please wait...");
progress.setIndeterminate(false);
progress.setCancelable(false);
progress.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progress.dismiss();
}
});
但这似乎仍然会因相同的错误而崩溃
【问题讨论】:
-
你还没有初始化你的进度对话框...尝试初始化它并运行
-
我将如何初始化它?
-
progress= ProgressDialog.show(this, "Title","Message", true);在尝试显示进度之前
-
哦,好吧,现在已经尝试过了,但后来发生了这种情况
The method show(Context, CharSequence, CharSequence, boolean) in the type ProgressDialog is not applicable for the arguments (new WebViewClient(){}, String, String, boolean) -
仍然面临问题或已解决?