当前位置:  开发笔记 > 编程语言 > 正文

单击链接时,Android WebView崩溃

如何解决《单击链接时,AndroidWebView崩溃》经验,为你挑选了2个好方法。

我的内容中有一些WebView小部件Activity.我loadData()用来设置内容,这个html包含一个链接.我的一些WebViews工作没问题,当我点击链接时,网页浏览器在新窗口中启动,但是当我点击某个链接时,有些会让我的应用程序崩溃.

10-13 08:45:24.257: ERROR/AndroidRuntime(751): Uncaught handler: thread main exiting due to uncaught exception
10-13 08:45:24.308: ERROR/AndroidRuntime(751): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.app.ApplicationContext.startActivity(ApplicationContext.java:627)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:236)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:185)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:277)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.os.Looper.loop(Looper.java:123)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at android.app.ActivityThread.main(ActivityThread.java:3948)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at java.lang.reflect.Method.invokeNative(Native Method)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at java.lang.reflect.Method.invoke(Method.java:521)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-13 08:45:24.308: ERROR/AndroidRuntime(751):     at dalvik.system.NativeStart.main(Native Method)

似乎是与一个问题Intent是,WebView火灾,当我点击的URL,但我没有这方面的控制Intent,我想.

有人有任何想法吗?

我用它AsyncTask来设置内容WebView,它工作正常:

public class SetAdTask extends AsyncTask{

    private Main main;
    private WebView webView;

    public SetAdTask(Main main, WebView webView){
        this.main = main;
        this.webView = webView;
    }

    protected void onPreExecute() {
        Main.Log("onPreExecute()");                
    }

    protected String doInBackground(Void... params) {
        Main.Log("doInBackground()");                
        return main.getRestClient().getAdCode();
    }

    protected void onPostExecute(String result) {
        Main.Log("onPostExecute()");

        String html = "ad";
        html += "
ADVERTISEMENT
"; html += result; html += ""; webView.loadData(html, "text/html", "latin-1"); } }

Vidar Vestne.. 26

问题是我webview被错误的背景初始化了......

我用了:

WebView w = new WebView(this.getApplicationContext())

哪个崩溃......

正确context就是它activity自己

WebView w = new WebView(this)



1> Vidar Vestne..:

问题是我webview被错误的背景初始化了......

我用了:

WebView w = new WebView(this.getApplicationContext())

哪个崩溃......

正确context就是它activity自己

WebView w = new WebView(this)



2> Lizozom..:

如果你不希望使用活动作为背景,另一个(奇怪)解决这个问题是要建立一个空WebViewClientWebView:

webView.setWebViewClient(new WebViewClient());

这似乎是一个Android错误:根据API,您可以使用上下文对象来初始化webview(但这可能会导致您提到的错误).


如果我能再投100票,我会的!具有应用程序上下文的WebView是维护WebView内部状态跨越方向更改的关键能力.很棒的发现.
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有