![](/img/trans.png)
[英]No suitable method found for inflate(int), tryingto use findViewbyID outside of activity
[英]How access findViewById() outside Activity
如何传递findViewById
作为参数?
我想创建方法:
public void makeText() {
String random = randomize(); //example...
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(randomText);
}
但是,当然,此方法没有功能findViewById
。 方法makeText
在Activity
和Fragment
类之外。
您应该将活动实例传递给您的类或方法。
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.