Android 传递活动并修改其视图
我有一个活动类A,它有几个文本视图作为其成员变量。类具有三个TextView的getter方法。我可以将a的引用传递给B类并修改三个文本视图吗?这是好的编程实践吗 编辑:代码- 甲级Android 传递活动并修改其视图,android,oop,Android,Oop,我有一个活动类A,它有几个文本视图作为其成员变量。类具有三个TextView的getter方法。我可以将a的引用传递给B类并修改三个文本视图吗?这是好的编程实践吗 编辑:代码- 甲级 public class A extends Activity { private TextView tv1; private TextView tv2; private TextView tv3; @Override protected void onCreate(Bu
public class A extends Activity {
private TextView tv1;
private TextView tv2;
private TextView tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// initialize tv1, tv2, tv3 here
// Pass a referce of A to B.
new B(this);
}
public TextView getTv1() {
return tv1;
}
public TextView getTv2() {
return tv2;
}
public TextView getTv3() {
return tv3;
}
}
B类-
public class B {
public B(A a){
a.getTv1().setText("Is");
a.getTv2().setText("this");
a.getTv3().setText("correct?");
}
}
您可以,您只需确保您在主线程上对
视图所做的任何操作。从其他线程可以使用runOnUiThread
您还可以使用处理程序。在活动
中定义处理程序
,并从任意位置向该处理程序发布消息。然后,它们将在主线程上进行处理
它可能只有在您的活动可见且另一个类正在运行某个线程时才有意义,以便在视图可见时更新视图。否则,如果活动不可见,您可以在onResume
或onStart
不过,在这种情况下,使用处理程序来避免太多依赖项似乎是可以的
编辑:在您发布的代码中,为什么需要B
?这只是示例代码。在我的实际代码中,类A非常长(超过1000 LOC)。这是因为一个私有WebViewClient类(~200行)试图修改大多数成员变量。我想让它成为一个独立的公共类,以提高可读性。这不是一个最佳实践。相反,您可以使用Intent
将值从A传递到B。我猜它不能通过Intent从A传递到B,因为B不是活动。或者如果我们在B中传递该活动的上下文。