从类(非活动)访问Textview

时间:2017-03-07 19:38:50

标签: android

我有一个扩展AppCompatActivity的主要活动,这个活动可以轻松访问TextView,而不是我需要访问同一个TextView的另一个java类...我找不到它!

3 个答案:

答案 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?