[英]How to call an Activity method from another class?
我的活動中有一個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);
這是否有可能以適當的方式做到這一點?
謝謝
只有創建視圖層次結構的原始線程才能觸及其視圖
Taht為什么我可以從JSInterface調用changeStep,但我可以在我的活動類中...我怎么能這樣做呢?
解決方案是......
runOnUiThread(new Runnable() {
public void run() {
step = newStep;
tvStep.setText("Etape "+step);
step_info = getString(R.string.step3_info);
}
});
像這樣它知道它是主線程的代碼。 但是奇怪的是,Eclipse拋出VM中止,表明上面的顯式錯誤......
必須在UI線程內調用changeStep
方法。 您可以使用runOnUiThread
實現此runOnUiThread
:
addWebsiteActivity.runOnUiThread(new Runnable() {
public void run() {
changeStep(step);
}
})
在代碼中將步驟更改為newStep
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.