我的活动中有一个 WebView,它有一个 JSInterface :
mWebView.addJavascriptInterface(new JSInterface(mWebView, this), "interfaceWebsite");
当我在我的界面中调用一个函数时,我希望看到一些视图(Textview/Button)被修改。
public void changeStep(int newStep){
step = newStep;
tvStep.setText("Etape "+step);
step_info = getString(R.string.step3_info);
}
}
step_info 有效(我的选项菜单更改),它只是一个字符串 var,但不是我的 TextView,它会引发 VM 中止。
我以这种方式调用函数(其中 addWebsiteActivity 在上面的代码中是“this”):
addWebsiteActivity.changeStep(step);
这有可能以适当的方式做到这一点吗?
谢谢
只有创建视图层次结构的原始线程才能接触其视图
这就是为什么我可以从 JSInterface 调用 changeStep 但我可以在我的活动类中......那我该怎么做呢?
解决方案是...
runOnUiThread(new Runnable() {
public void run() {
step = newStep;
tvStep.setText("Etape "+step);
step_info = getString(R.string.step3_info);
}
});
像这样它知道这是主线程的代码。但奇怪的是 Eclipse 把我的虚拟机中止了上面的显式错误...