我无法找到此代码的错误。有人请帮帮我。我在其他项目中使用了相同的代码,在该项目中它运行良好。我只是尝试打开一个网址,将其加载到WebView
中,我已经在manifest
文件中提供了互联网权限。
这是代码:
package com.example.itmuantiragging;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
@SuppressLint("NewApi")
public class Fragment_Website extends Fragment {
WebView wv;
ProgressDialog pg;
Background bg;
public Fragment_Website() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_website, container,false);
//Toast.makeText(getActivity(), "Loading... Please Wait..",Toast.LENGTH_LONG).show();
wv = (WebView) rootView.findViewById(R.id.webView1);
bg = new Background();
bg.execute();
return rootView;
}
public void progress(){
pg = new ProgressDialog(getActivity());
pg.setTitle("");
pg.setMessage("Please Wait.........");
pg.setCancelable(false);
pg.setIndeterminate(true);
pg.show();
}
class Background extends AsyncTask<Void, Void, Void>
{
@SuppressLint("SetJavaScriptEnabled")
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try{
wv.loadUrl("http://www.siddharth.uphero.com/MTNL_address_locator.html");
}catch(Exception e){
e.printStackTrace();
}
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.setWebViewClient(new MyWebClient());
return null;
}
@Override
protected void onPostExecute(Void result) {
}
@Override
protected void onPreExecute() {
progress();
}
}
public class MyWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
pg.dismiss();
}
}
}
答案 0 :(得分:1)
您只能更新UI线程上的视图。
答案 1 :(得分:0)
我不明白你为什么要进行后台操作,因为WebView
有自己的方法来处理它。您正确使用WebView
,因此您可以使用以下方法直接在android WebView
中加载URL。
webview.loadUrl(url)
所以现在问题是如何显示进度条。好的是方法onPageStarted()
和onPageFinished()
中的内置版,您可以在其中开始进度并停止进度。在onCreateView()
方法中移动以下代码。
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.setWebViewClient(new MyWebClient());
希望它有意义。