我有一个扩展AppCompatActivity的主要活动,这个活动可以轻松访问TextView,而不是我需要访问同一个TextView的另一个java类...我找不到它!
答案 0 :(得分:3)
检查以下代码: -
在您的活动中: -
TextView txtview = (TextView)findviewbyId(R.id.tv);
MyJavaClass jav = new MyJavaClass();
jav.setTextView(txtview);
现在在您的Java类中: -
class MyJavaClass {
TextView tv ;
public void setTextView(TextView view){
this.tv = view;
}
}
答案 1 :(得分:0)
我认为最好保留Android框架对象(特别是那些尽可能将Context(视图,活动,碎片等)与其余代码隔离开来的对象。
不是将TextView暴露给“普通”java对象,最好定义一个没有Android Context的接口,并将其传递给“普通”java对象。
另一个有效的策略是使用消息总线(或充当总线的RxJava主题),在包含TextView的Activity和普通java对象之间进行通信。例如让普通java对象告诉Activity通过消息更改TextView的内容。
答案 2 :(得分:-2)
首先,为什么要直接从另一个类访问TextView?
该类是Activity,Fragment还是只是一个java类?
尽管 您可以创建静态 TextView,然后可以在另一个类中访问它。 但是请注意活动生命周期,如果活动停止,那么TextView的引用将为null。
最后不要使用静态。
根据OOAD的说法,不要将TextView传递给另一个班级。
为什么我的答案得到-1?