Android:如何从其他类更改Activity中的TextView - 最佳实践

时间:2014-01-29 13:59:35

标签: android textview

我的Activity类上有一个TextView和一个Button。

单击Button时,我创建另一个类的实例,该类不会扩展Activity。

另一个类进行一些计算,然后可能想要更改textview。

我看到了很多解决方案,但我正在寻找最佳实践如何做到最好(主类中的set方法?处理程序?...)

但我不想传递内容或内容。

所以它或多或少看起来像这样:

public class MainClass extends Activity {
protected void onCreate(Bundle savedInstanceState) {
MyClass2 a = new MyClass2;
a.generateCodeOrSomething();
}

所以class2看起来像这样:

public class MyClass2{
public generateCodeOrSomething(){
double a=3.5;
}

现在我想在Textview中打印3.5但是findViewById不起作用,据我所知它也不是一个好主意。 当我在MainClass中创建一个方法,如

public valueChanged(double a){
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(String.valueOf(a));
}

我不能打电话,或者我可以吗?那是好的做法还是会是什么? 感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要某种回调,例如

public interface CalculationFinishedInterface {
    public void onCalculationFinished(double result);
}

public class MyClass2 {

private CalculationFinishedInterface cfi;

public MyClass2(CalculationFinishedInterface cfi) {
    this.cfi = cfi;
}

public generateCodeOrSomething(){
    double a=3.5;
    if(this.cfi!=null) this.cfi.onCalculationFinished(a);
}

public class MainClass extends Activity implements CalculationFinishedInterface {

protected void onCreate(Bundle savedInstanceState) {
    TextView textView = findViewById(R.id.textView);
    MyClass2 a = new MyClass2(this);
    a.generateCodeOrSomething();
}

@Override
public void onCalculationFinished(double result) {
    textView.setText(result+"");
}

}