Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在android webView中导致这种情况的原因是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到以下异常,无法调试它.

请帮忙.
码:@H_616_8@

public class HybridActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.main);

        WebView webview=(WebView)findViewById(R.id.webkitWebView1);
        WebSetTings setTings=webview.getSetTings();
        setTings.setJavaScriptEnabled(true);
        setTings.setDatabaseEnabled(true);
        setTings.setDomStorageEnabled(true);
        setTings.setAllowFileAccess(true);
        setTings.setBuilTinZoomControls(true);
        webview.setWebChromeClient(new WebChromeClient());

        //  webview.loadUrl("file:///android_asset/www/html/hyb.html");
        // webview.loadUrl("file:///android_asset/index.html");
        try {
            webview.loadUrl("http://www.google.com");
        } catch (Exception E) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        MultipleWebViewHanlder webView2 = new MultipleWebViewHanlder(this);
        webView2.loadNewWebView();
    }
}

public class MultipleWebViewHanlder {
    public MultipleWebViewHanlder(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;
    }

    public void MultipleWebViewArea(final String command) {

        final RelativeLayout.LayoutParams params = new  RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.FILL_PARENT);
        try {
            Log.i("","Inside tryyyyyyyyyyyyyyyyyyyyy");
            final WebView mWebView = new WebView(context);

            WebSetTings setTings=mWebView.getSetTings();
            setTings.setJavaScriptEnabled(true);
            setTings.setDatabaseEnabled(true);
            setTings.setDomStorageEnabled(true);
            setTings.setAllowFileAccess(true);
            setTings.setBuilTinZoomControls(true);
            mWebView.setWebChromeClient(new WebChromeClient());
            JSInterface.handler.post(new Runnable() {

                @Override
                public void run() {
                    try {
                        Log.i("","Inside tryyyyyyyyyyyyyyyyyyyy b4 add content viewwwwwwwwww");
                        Runnable runnable = new Runnable() {
                            public void run() {
                                ((Activity)context).addContentView(mWebView,params);
                                Log.i("","Inside tryyyyyyyyyyyyyyyyyyyy after add content viewwwwwwwwww ");
                                mWebView.loadUrl(((Activity)context).getresources().getString(R.String.DemoURL));
                            }
                        };
                        ((Activity)context).runOnUiThread(runnablE);

日志:@H_616_8@

04-20 10:55:58.052: WARN/dalvikvm(9255): threadid=8: thread exiTing with uncaught exception (group=0x400207d8)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255): FATAL EXCEPTION: WebViewCoreThread  
04-20 10:55:58.092: ERROR/AndroidRuntime(9255): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.  
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.view.ViewRoot.checkThread(ViewRoot.java:2812)  
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)  
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633)  
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.view.View.invalidate(View.java:5115)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.webkit.WebView.viewInvalidate(WebView.java:2565)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.webkit.WebView.invalidateContentRect(WebView.java:2584)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.webkit.WebView.access$6200(WebView.java:304)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.webkit.WebView$PrivateHandler.handlemessage(WebView.java:7860)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.os.Handler.dispatchmessage(Handler.java:99)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.os.Looper.loop(Looper.java:123)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:637)
04-20 10:55:58.092: ERROR/AndroidRuntime(9255):     at java.lang.Thread.run(Thread.java:1096)
04-20 10:55:58.102: WARN/Activitymanager(172):   Force finishing activity com.Hy5/.activity.Hy5CanvasActivity

解决方法

没有看到代码就很难说
但似乎你正在尝试从它的所有者线程之外更改一个元素(这可能是因为你试图从其他线程更改UI元素).

所以试试这个:有一个辅助函数runOnUiThread()接受一个runnable作为参数:@H_616_8@

Runnable runnable = new Runnable() {
    public void run() {
        // your code here
    }
}

runOnUiThread(runnablE);

大佬总结

以上是大佬教程为你收集整理的在android webView中导致这种情况的原因是什么?全部内容,希望文章能够帮你解决在android webView中导致这种情况的原因是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。