如何从另一个类调用Activity方法?

时间:2012-04-27 11:05:46

标签: java android android-activity

我的活动中有一个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中止,以及上面明确的错误...

2 个答案:

答案 0 :(得分:2)

必须在UI线程内调用

changeStep方法。您可以使用runOnUiThread

实现此目的
addWebsiteActivity.runOnUiThread(new Runnable() {
    public void run() {
        changeStep(step);
    }
})

答案 1 :(得分:0)

在代码中将步骤更改为newStep