2013-04-25 34 views
1

HTML:

<a href="javascript:AndroidFunction.xxxx()">xxxx</a> 

活動:

public class MainActivity extends Activity 
    { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
      { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   

     WebView webview = (WebView) findViewById(R.id.webview); 
     final MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(this); 
     webview.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction"); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.loadUrl("file:///android_asset/x1.html");   
    } 

    public class MyJavaScriptInterface { 
     Context mContext; 

     MyJavaScriptInterface(Context c) { 
      mContext = c; 
     } 

     public void xxxx() 
     { 
      setContentView(R.layout.x);    
     } 
    } 
} 

而且我得到這個錯誤:

未捕獲的處理程序:thread WebViewCoreThread exiting due to uncaught exception android.view.ViewRoot$CalledFromWrongThreadException

只有原始創建視圖層次結構的線程可以觸及其視圖。

請幫助我。

回答

0

其中之一,你不應該從除onCreate之外的任何地方呼叫setContentView。如果您想更改View,請在佈局層次結構中啓動新的Activity或添加/更新View

另外,這個CalledFromWrongThreadException意味着你不想在UI線程上編輯View,這是不允許的(因爲我現在不會進入)。我建議你使用View.post(Runnable action)在UI線程上編輯View。我的answer to this question應該可以幫到你。

0

嘗試

public void xxxx() { 
    runOnUiThread(new Runnable() { 
     public void run() { 
      setContentView(R.layout.x);    
     } 
    }); 
} 
-1

澳洲英語: 此錯誤是常見的,如果你想從UI線程外送UI事件到UI線程。 測試方法Thread嘗試在UI線程之外與UI進行交互。

建議: 使用Handler來解決原因。

解決方案:Link

相關問題