Java 如何在活动外部访问findViewById()
如何将Java 如何在活动外部访问findViewById(),java,android,Java,Android,如何将findViewById作为参数传递 我想创建一个方法: public void makeText() { String random = randomize(); //example... TextView textView = (TextView) findViewById(R.id.textView); textView.setText(randomText); } 当然,这个方法没有函数findviewbyd。方法makeText在Activity和Fra
findViewById
作为参数传递
我想创建一个方法:
public void makeText() {
String random = randomize(); //example...
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(randomText);
}
当然,这个方法没有函数
findviewbyd
。方法makeText
在Activity
和Fragment
类之外。您应该将活动实例传递给您的类或方法
public void makeText(Activity activity) {
String random = randomize(); //example...
TextView textView = (TextView) activity.findViewById(R.id.textView);
textView.setText(randomText);
}
首先,在activity或fragment类之外编辑控件属性是个坏主意。将上下文对象作为活动传递也不是最好的主意,但我认为您必须将其作为参数ViewGroup传递,它是视图的根,并对其调用
findViewById
我建议您将传递给要编辑的方法视图。将活动的实例作为参数传递是一种反模式,并要求内存泄漏 经验法则是:若你们想操纵视图,在UI层(活动/片段/自定义视图等)上进行操作,但不要再传递它们了
因此,如果您想编辑文本,请在activity/fragment/中放大此视图,并向其传递一个新值。您应该将
TextView
的实例作为参数传递。然后你可以做yourTextView.setText(randomText)
?我不想要重复代码。在几个活动中,我都有这段代码,所以我想把它放在一个地方。毕竟,我仍然看不到有任何理由做出这样的全局方法。