1

我想WebView从我的开始,AsyncTask但它似乎没有运行。这是我的onPostExecute方法的样子:

  public class Viewer extends AsyncTask<URI, Integer, URI> {

      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);

我该如何解决这个问题?

4

4 回答 4

1

setContentView是从原始布局到 webView 还是你有一个容器来放置 webview?否则我认为不会出现 webView UI。

于 2012-09-07T08:40:42.537 回答
0

我已经解决了这个问题。Activity它与or的使用无关Context。两者都工作得很好。某些 URL 似乎没有加载WebView. 我将 URL 更改WebView为指向 Google 之类的网站,它工作得很好。似乎如果 URL 不正确,WebView则不会引发异常,但也不会打开。

于 2012-09-11T11:43:24.870 回答
0

你确定你执行你的 AsyncTask

                    @Override
            protected void onPostExecute(Void result){              


            }
        }.execute();

还需要类名

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)));

      }
于 2012-09-07T08:46:26.977 回答
-2

我不知道为什么会发生这种情况,但你为什么不通过Intent你的onPostExecute(Uri uriWebpage)?

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

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

于 2012-09-06T14:22:46.907 回答