我写了一个很简单的程序,有两个html文件,启动程序先用webview调用第一个html,代码        browser.getSettings().setJavaScriptEnabled(true);
        browser.addJavascriptInterface(loadWidget, "loadWidget");
        browser.requestFocus();
        browser.loadUrl("file:///android_asset/loader.html");
然后点击页面上一个按钮,想跳转到第二个html文件的界面    public class Loader
    {
     public void ChooseW2load(String str)
     {       
       
      Toast.makeText(getApplicationContext(), str, 1).show();      
      browser.loadUrl("file:///android_asset/"+str+".html");
     }
    }下面是启动时的html代码<html>
<head>
<title>Android_Passing_HTML_JS</title> <head>
<script language="javascript">
function talkBack2Android() {
loadWidget.ChooseW2load(document.getElementById("myText").value);}
</script>
</head>
<body>
<h1>Webkit Browser</h1>
<p> Enter some data here <input type="text" id="myText" />
<p> <input type="button" onclick= "talkBack2Android()" value="Load">
</body>
</html>
这个程序在2.1上跑都没有问题,到2.2 和2.3上是就报错了,跳转的时候就意外停止了,报错: ERROR/AndroidRuntime(776): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
菜鸟急求大神们帮助!!!

解决方案 »

  1.   

    跨进程调用东西了。
    建议你起一个handler通过发消息来更新界面。
    界面的更新必须在mainthread才可以操作。
      

  2.   


    可是为什么这个在2.1里可以运行呢,请教下怎么起handler发消息更新界面,本人菜鸟 不甚感激啊!!
      

  3.   

    js调用java处理的代码要放到一个线程里面才行
    public class Loader
        {
            public void ChooseW2load(String str)
            {              
                启动一个线程把下面二行代码放到线程里面就OK了  
                 Toast.makeText(getApplicationContext(), str, 1).show();      
                 browser.loadUrl("file:///android_asset/"+str+".html");
            }
        }
      

  4.   


    这样开启线程?     public void ChooseW2load()
         {       
          new Thread(new Runnable()
          {
          public void run()
          {
          Toast.makeText(getApplicationContext(),commonData, 1).show();      
     browser.loadUrl("file:///android_asset/"+commonData+".html");
          
          }
          }).start();     }
    还是不对额