有没有办法从非Activity派生类访问布局视图? 我正在创建一个手风琴类,并需要访问一些Activity的UI元素。 我将Activity的上下文传递给我的手风琴类构造函数,但findViewById API仅从Activity类中可用。 我也不想传递我的Activity实例,因为由于潜在的内存泄漏而被反对。
有没有办法从非Activity派生类访问布局视图? 我正在创建一个手风琴类,并需要访问一些Activity的UI元素。 我将Activity的上下文传递给我的手风琴类构造函数,但findViewById API仅从Activity类中可用。 我也不想传递我的Activity实例,因为由于潜在的内存泄漏而被反对。
我非常确定你可以将一个activity作为参数传递,例如:
public void initSouthViews(Activity activity) {
for (int i = 0; i < southScores_.length; ++i) {
southScores_[i] = (EditText) activity.findViewById(10);
}
}
public interface IViewRequest {
public View requestViewByID(int id);
}
public class MyActivity extends Activity {
private IViewRequest viewRequest = new IViewRequest(){
public View requestViewByID(int id){
return findViewById(id);
});
}
public class Accordion(){
private IViewRequest viewRequest;
public Accordion(IViewRequest viewRequest){
this.viewRequest = viewRequest;
}
private View findViewById(int id){
return viewRequest.requestViewByID(id);
}
}
我从未尝试过这样的事情。我也不知道它是否会导致任何内存泄漏。但它确实做到了你所要求的 :) “从活动外部调用findViewById()”
Activity的上下文实际上就是Activity类本身。假设该对象仅存在于一个Activity中,将Activity类型的对象传递给它应该是安全的。否则,请考虑重新设计您的手风琴类。
我将一个视图实例传递给了类的构造函数。