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 :(得分:0)
首先,您不应该从setContentView
以外的任何地方呼叫onCreate
。如果您想更改View
,请在布局层次结构中开始新的Activity
或添加/更新View
。
此外,这个CalledFromWrongThreadException
表示您在UI线程上没有允许时编辑View
,这是不允许的(原因我现在不会进入)。我建议您使用View.post(Runnable action)
编辑UI线程上的View
。我的answer to this question可以帮到你。
答案 1 :(得分:0)
试
public void xxxx() {
runOnUiThread(new Runnable() {
public void run() {
setContentView(R.layout.x);
}
});
}
答案 2 :(得分:-1)