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)
?我不想要重复代码。在几个活动中,我都有这段代码,所以我想把它放在一个地方。毕竟,我仍然看不到有任何理由做出这样的全局方法。