繁体   English   中英

如何在Activity外访问findViewById()

[英]How access findViewById() outside Activity

如何传递findViewById作为参数?

我想创建方法:

public void makeText() {
    String random = randomize(); //example...
    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(randomText);
}

但是,当然,此方法没有功能findViewById 方法makeTextActivityFragment类之外。

您应该将活动实例传递给您的类或方法。

public void makeText(Activity activity) {
    String random = randomize(); //example...
    TextView textView = (TextView) activity.findViewById(R.id.textView);
    textView.setText(randomText);
}

首先,编辑超出活动或片段类的控件属性是一个坏主意。 将上下文对象作为Activity传递也不是最好的主意,但是我必须将其作为参数ViewGroup传递,该参数是视图的根并在其上调用findViewById

个人我建议您传递给要编辑的View方法。

将活动的实例作为参数传递是一种反模式,并请求内存泄漏。

经验法则是:如果要操作视图,请在UI层(活动/片段/自定义视图等)上进行操作,但不要再传递它们。

因此,如果要编辑文本,请在活动/片段/所有内容中将此视图充气,并传递给它一个新值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM