gpt4 book ai didi

java - 从自定义 onClickListener 类调用 Activity 方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:01 24 4
gpt4 key购买 nike

我尝试从自定义 onClickListener 对象调用保留在 MainActivity 类中的方法。变量作用域有问题。

所以在我的 MainActivity 中我有:

Button resetButton = (Button) findViewById(R.id.ResetButton);
View.OnClickListener myListener = new MyListener(GameBoard, width);
resetButton.setOnClickListener(myListener);

这就是我的 myListener 类的样子:

public class MyListener implements View.OnClickListener
{
private static MainActivity mainActivity;
public MyListener(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}

@Override
public void onClick(View v) {
mainActivity.myMethod();
}
}

MainActivity 中也使用一些 MainActivity 实例变量的方法:

public void myMethod()
{
InstanceVariable++; // for example
}

然后,当我通过单击重置按钮传递给 myListener 构造函数的 mainActivity 对象上调用 myMethod 时,我收到有关 MainActivity InstanceVariable 范围的错误。我对 Android 编程非常初学者,所以我无法完全理解它的来源。

当我将此InstanceVariable传递给myListener对象构造函数时,此错误消失。我认为应该有一种更简单的方法来做到这一点。

最佳答案

更改为:

public void myMethod() {
mainActivity.instanceVariable++; // for example
}

instancevariable 在您的 MyListener 类中不可见,您必须指出它在 mainActivity 对象中。

如果您的instanceVariable是私有(private)的,请在mainActivity中创建getter函数:

public void getInstanceVariable() {
return this.instanceVariable
}

并以这种方式使用它:

public void myMethod() {
mainActivity.setInstanceVariable(mainActivity.getInstanceVariable()+1); // for example
}

关于java - 从自定义 onClickListener 类调用 Activity 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com