我的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));
}
我不能打电话,或者我可以吗?那是好的做法还是会是什么? 感谢您提前提供任何帮助。
答案 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+"");
}
}