Android:将多个单击侦听器附加到按钮?

Android:将多个单击侦听器附加到按钮?,android,android-layout,android-fragments,android-button,Android,Android Layout,Android Fragments,Android Button,当我创建一个库时,我想使用该库跟踪应用程序中的按钮点击(类似于分析点击跟踪库)。所以我尝试了很多东西,但都不管用。我已经浏览了下面的链接,我知道我们可以使用复合模式添加多个侦听器 请帮我达到我的要求 这是我试过的代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.on

当我创建一个库时,我想使用该库跟踪应用程序中的按钮点击(类似于分析点击跟踪库)。所以我尝试了很多东西,但都不管用。我已经浏览了下面的链接,我知道我们可以使用复合模式添加多个侦听器

请帮我达到我的要求

这是我试过的代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fragment_demo);

    final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.frameFragment, new FragmentA());
    fragmentTransaction.commit();

    Button button = findViewById(R.id.buttonDemo);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.e("test", "Button Click 1");
        }
    });

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.e("test", "Button Click 2");
            /*Field field = null;
            try {
                Log.e("test", "CLASS NAME: "+v.getClass().getName());
                field = Class.forName(v.getClass().getName()).getDeclaredField("mOnClickListener");
                View.OnClickListener retrievedListener = (View.OnClickListener) field.get(v);
                Log.e("test", ""+retrievedListener.toString());
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
                Log.e("test", "Exception: NoSuchFieldException");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                Log.e("test", "Exception: ClassNotFoundException");
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                Log.e("test", "Exception: IllegalAccessException");
            }*/


            ClickListener listenerCollector = new ClickListener();
            listenerCollector.addOnclickListener(this);
        }
    });



}
}

另一类

public class ClickListener implements View.OnClickListener {
private ArrayList<View.OnClickListener> clickListeners = new ArrayList<>();

public void addOnclickListener(View.OnClickListener listener){
    clickListeners.add(listener);
}
@Override
public void onClick(View v) {
    for(View.OnClickListener l : clickListeners){
        l.onClick(v);
        Log.e("test", "onclick from composite click");
    }
}
public类ClickListener实现View.OnClickListener{
private ArrayList clickListeners=新建ArrayList();
public void addOnclickListener(View.OnClickListener侦听器){
单击侦听器。添加(侦听器);
}
@凌驾
公共void onClick(视图v){
对于(View.OnClickListener l:clickListeners){
l、 onClick(v);
Log.e(“test”,“从复合单击中单击”);
}
}
}

尝试以下方法:

在另一类的
main活动的
onCreate
onCreate
中添加以下内容:

使
单击Listener
class a
singleton
,以便它随时包含单个对象

ClickListener listenerCollector = new ClickListener.getInstance();
listenerCollector.addOnclickListener(this);
MainActivity
中单击按钮的
onClick
,添加以下内容:

for (ClickListener listener: listenerCollector.clickListeners){
      listener.onClick();
}
删除
ClickListener OnClick
方法中的for循环

希望这有帮助。

尝试以下方法:

在另一类的
main活动的
onCreate
onCreate
中添加以下内容:

使
单击Listener
class a
singleton
,以便它随时包含单个对象

ClickListener listenerCollector = new ClickListener.getInstance();
listenerCollector.addOnclickListener(this);
MainActivity
中单击按钮的
onClick
,添加以下内容:

for (ClickListener listener: listenerCollector.clickListeners){
      listener.onClick();
}
删除
ClickListener OnClick
方法中的for循环


希望这能有所帮助。

如果您可以添加您想要实现的内容,那么将很容易提供帮助。@Suresh您可以发布您的代码吗?此链接是否回答了您的问题@Keshav1234,我已经浏览了上面的链接,我不清楚。@Suresh好的,请将您从其他资源中尝试和理解的内容发布代码。如果您可以添加,您试图实现的内容将很容易得到帮助。@Suresh您可以发布您的代码吗?此链接是否回答了您的问题@Keshav1234,我已经浏览了上面的链接,我不清楚。@Suresh ok,请发布您从其他资源中尝试和理解的代码。我想在我的Android库类(即非活动类)中跟踪此单击侦听器。它会工作吗?图书馆可以有一个活动。你可以通过实现并使用它来构建一个模块。我想在我的Android库类(即不是活动类)中跟踪这个点击监听器。它会工作吗?图书馆可以有一个活动。您可以通过实现并使用它来构建一个模块。