gpt4 book ai didi

Android EventBus 和基类

转载 作者:行者123 更新时间:2023-11-29 01:29:10 28 4
gpt4 key购买 nike

我正在尝试在我所有对话的基类中实现一些通用逻辑和对某些事件的 react 。

并在 EventBus 中注册和注销,并在基类中捕获一些事件。

因此,当我尝试实例化派生类的实例时 - EventBus 抛出一个异常,即 DerivedClass 没有像 onEvent(*) 这样的方法。我不想在每个派生类中添加一些 stub onEvent 方法,这不是软件开发应有的方式。

如果没有办法使用这种关于继承的方法,那就太可悲了。

有人遇到过吗?

最佳答案

在注册 EvenBus 之前,您可以在基类中创建一个 protected 方法(或带有抽象方法的抽象类),您可以在子类中覆盖(如果需要)。

public class Test extends Fragment{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(doIneedEventBus()){
EventBus.getDefault().register(this);
}
}

@Override
public void onDestroy() {
super.onDestroy();
if(doIneedEventBus()){
EventBus.getDefault().unregister(this);
}
}

protected boolean doIneedEventBus() {
return true;
}
}

子类:

public class TestChild extends Test {

@Override
protected boolean doIneedEventBus() {
return false;
}
}

第二个选项:

 try {
EventBus.getDefault().register(this);
} catch (Throwable t){
t.printStackTrace();
}

或者您可以等到这个问题在库中得到修复 - https://github.com/greenrobot/EventBus/issues/58

关于Android EventBus 和基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266535/

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