假设我有两项 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/