簡體   English   中英

如何從另一個類調用Activity方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM