gpt4 book ai didi

java - 从非 Activity 类调用不同 Activity 中的方法

转载 作者:行者123 更新时间:2023-11-29 03:07:33 27 4
gpt4 key购买 nike

我有 3 个具有相同功能的类。类 H 是一个 Controller 类,所以我创建了一个 setactivity 类来获取调用它的 Activity 的实例。现在我必须从非 Activity 的 Controller 类 H 调用当前初始化类的函数 userleft()。

我收到的错误是“Activity 类型未定义方法 userleft()”,我知道会出现异常,因为 Activity 类不包含名为 userLeft() 的方法。但实现这一目标的最佳方式是什么?

请参阅下面的应用程序结构。

public class A extends Activity {

void onCreate(Bundle savedInstanceState) {
H.getInstance().setactivity(this);
}

public void userleft() {

}
}

public class B extends Activity {

void onCreate(Bundle savedInstanceState) {
H.getInstance().setactivity(this);
}

public void userleft() {

}
}

public class C extends Activity {

void onCreate(Bundle savedInstanceState) {
H.getInstance().setactivity(this);
}

public void userleft() {

}
}

我还有一个非 Activity 类

public class H {
public static H getInstance() {
if (instance == null) {
instance = new H();
}
return instance;
}

public void setActivity(Activity activity) {
this.activityGame = activity;
}
public void randomCallBack(){
activityGame.userleft();
}
}

谢谢!

最佳答案

你需要像下面这样重新设计你的类

声明一个基本 Activity 类

public abstract class BaseActivity extends Activity {

public abstract void userleft();
}

然后像这样声明你的类

public class A extends BaseActivity {

void onCreate(Bundle savedInstanceState) {
H.getInstance().setactivity(this);
}

@Override
public void userleft() {

}
}

现在修改你的非 Activity 类

public class H {
public static H getInstance() {
if (instance == null) {
instance = new H();
}
return instance;
}

public void setActivity(BaseActivity activity) {
this.activityGame = activity;
}
public void randomCallBack(){
activityGame.userleft();
}
}

现在您将能够为任何子类 Activity 调用您的方法。

关于java - 从非 Activity 类调用不同 Activity 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337202/

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