首先,我甚至不确定这是否可行。
我正在尝试实现以下功能:创建我自己的单独依赖项,动态地将onclick侦听器添加到已知id的某些元素。 (完全在活动之外;请参阅以下内容:)
public class Example extends Application
到目前为止,我所管理的是从我自己的班级中访问特定的视图元素。为此,我使用LayoutInflator:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_main, null);
View element = view.findViewById(R.id.readthis);
在检索特定视图元素后,我添加了一个onclickListener(在本例中为一个按钮)
button.setOnClickListener(getOnClickDoSomething(button));
View.OnClickListener getOnClickDoSomething(final Button button) {
return new View.OnClickListener() {
public void onClick(View v) {
button.setText("text now set.. ");
}
};
}
设置该东西工作正常。但我猜测布局充气器实际上创建了一个视图副本,而我 不 直接引用当前活动的视图对象。这意味着没有触发onclickListener,因为它没有设置为正确的对象。
我对Android很新,因此我是在浪费时间,还是有办法让它发挥作用。很想得到一些建议。
答案 0 :(得分:0)
我不确定我的问题是否正确,但您可以在包含相关视图的活动中公开setter方法,从外部设置点击监听器。像这样:
public void setViewClickListener(OnClickListener clickListener) {
if (myView != null) {
myView.setOnClickListener(clickListener);
}
}
然后在单独的类中,使用相关的单击侦听器调用此方法。
答案 1 :(得分:0)
解决!我是以错误的方式看待这个。通过实施Application.ActivityLifecycleCallbacks
并通过registerActivityLifecycleCallbacks(this)
现在我可以从回调中的活动上下文中访问视图。