如何将findViewById
作为参数传递?
我想创建方法:
public void makeText() {
String random = randomize(); //example...
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(randomText);
}
但是这个方法当然没有函数findViewById
。方法makeText
位于Activity
和Fragment
类之外。
答案 0 :(得分:4)
您应该将活动实例传递给您的班级或方法。
public void makeText(Activity activity) {
String random = randomize(); //example...
TextView textView = (TextView) activity.findViewById(R.id.textView);
textView.setText(randomText);
}
答案 1 :(得分:2)
首先,编辑控件属性超出activity或fragment类是个坏主意。将上下文对象作为Activity传递也不是最好的想法,但我必须将它作为参数传递ViewGroup,它是视图的根,并在其上调用findViewById
。
个人我建议传递给您想要编辑的方法。
答案 2 :(得分:1)
将活动的实例作为参数传递是反模式并乞求内存泄漏。
经验法则是:如果你想操纵视图,在UI图层(活动/片段/自定义视图等)上进行操作,但不要再进一步传递它们。
因此,如果您想编辑文本,请在activity / fragment /之内充实此视图,并将新视图传递给它。