无法从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))); }
我已经解决了这个问题。 它与Activity
或Context
的使用无关。 两者都工作得很好。 某些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发布错误堆栈跟踪。