java - 在另一个 Activity 上 setonclicklistener

标签 java android android-activity listener

假设我有两项 Activity :“A”和“B”。

Activity A 的布局中有一个按钮。我想在 Activity B 上设置它的点击监听器实现。 假设这是 Activity A:

Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(B.this);

在 Activity B 中,我尝试实现该功能:

public void OnClick(View v)
{
//DO SOMETHING
}

我收到以下错误:

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (A)

  • No enclosing instance of the type A is accessible in scope

我在这里做错了什么?

最佳答案

GUI 组件的处理必须在实例化该组件的同一个 UI 线程中进行。

因此您想要的 View 不正确还要确保仅当 View 使用该组件设置并且当前对用户进行交互。

如果您确实想要这样做,那么您可以通过以下方式覆盖不同 Activity 中点击监听器的默认实现:

1)静态引用:在 Activity A 中将按钮设置为公共(public)静态,并通过 A 类的名称在 Activity B 中使用它。

2)接口(interface):在 Activity A 上实现 OnClickListener,但在 B 中无法访问

3) 针对所有 Activity 自定义 MyClickListener

public class MyClickListener implements OnClickListener {
    @Override
    public void onClick(View v) {
        mContext = v.getContext();

        switch (v.getId()) {
case R.id.button:
// Your click even code for all activities
break;
default:
break; }}
}

在 A 类和 B 类中使用它,如下所示: 按钮按钮 = (按钮)findViewById(R.id.button); 按钮.setOnClickListener(new MyClickListener());

关于java - 在另一个 Activity 上 setonclicklistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464857/

相关文章:

android - 在 Android 中将 OnValueChange 实现为 NumberPicker

android - RelativeLayout 中的额外边距

android - 在 Android 中,通过多个 Activity 维护 session 的最佳做法是什么?

java - java中的纯轻量级应用程序

java - this.getClass().getClassLoader().getResourceAsStream 始终返回 null

android - Activity 淡入淡出动画

android - 为什么在重新创建 Activity 时我的 savedInstanceState 为 Null?

java - 如何替换android中的序列?

java - 如何使用 FFmpeg 限制阅读速度

android - 从 fragment 内部调用 Activity 方法