添加onclickListeners以查看活动之外的元素(自己的类)

时间:2016-02-10 12:30:49

标签: java android

首先,我甚至不确定这是否可行。

我正在尝试实现以下功能:创建我自己的单独依赖项,动态地将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很新,因此我是在浪费时间,还是有办法让它发挥作用。很想得到一些建议。

2 个答案:

答案 0 :(得分:0)

我不确定我的问题是否正确,但您可以在包含相关视图的活动中公开setter方法,从外部设置点击监听器。像这样:

public void setViewClickListener(OnClickListener clickListener) {
        if (myView != null) {
            myView.setOnClickListener(clickListener);
        }
    }

然后在单独的类中,使用相关的单击侦听器调用此方法。

答案 1 :(得分:0)

解决!我是以错误的方式看待这个。通过实施Application.ActivityLifecycleCallbacks并通过registerActivityLifecycleCallbacks(this)

注册我的课程解决了这个问题

现在我可以从回调中的活动上下文中访问视图。