无法从AsyncTask启动WebView

我想从我的AsyncTask启动一个WebView但它似乎没有运行。 这是我的onPostExecute方法的样子:

  public class Viewer extends AsyncTask { private Activity objContext = null; public Viewer(Activity objContext) { this.objContext = objContext; } protected void onPostExecute(URI uriWebpage) { WebView wbvBrowser = new WebView(this.objContext); wbvBrowser.getSettings().setBuiltInZoomControls(true); wbvBrowser.getSettings().setJavaScriptEnabled(true); wbvBrowser.loadUrl(uriWebpage.toString()); } } 

我的任务由我的应用程序中的两个活动使用,因此我的全局objContext变量的类型为Activity 。 如果我将objContext变量的类型更改为调用类的名称,它可以正常工作但我无法从其他调用类实例化我的任务。 我像这样实例化我的任务。

 Viewer mytask = new Viewer(this); 

我怎么解决这个问题?

你是否将内容从原始布局设置为webView,或者你有一个容器来放置webview? 否则我认为不会出现webView UI。

您确定要执行AsyncTask吗?

  @Override protected void onPostExecute(Void result){ } }.execute(); 

还需要class级名称

 Viewer mytask = new Viewer(YourclassName.this); 

//或者这可能会帮助你

  private Context mcontext; public Viewer(Context objContext) { this.mcontext= objContext; } protected void onPostExecute(URI uriWebpage) { WebView wbvBrowser = new WebView(((Activity)(mcontext))); } 

我已经解决了这个问题。 它与ActivityContext的使用无关。 两者都工作得很好。 某些URL似乎没有加载WebView 。 我更改了WebView的URL以指向像Google这样的网站,它运行得很好。 看起来如果URL不正确, WebView不会抛出exception但也不会打开。

我不知道为什么会这样,但你为什么不在onPostExecute(Uri uriWebpage)通过Intent启动内置的Web浏览器?

 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(uriWebPage); startActivity(intent); 

如果此解决方案不满足您,请从LogCat发布错误堆栈跟踪。