Java子类如何响应超类中的事件?

时间:2018-03-20 07:11:32

标签: java android oop

我正在构建一个包含3项活动的Android应用程序;

  1. MainActivity
  2. DetailsActivity
  3. MapActivity
  4. 一个名为DataRequester的帮助程序类,用于从我的在线数据库中获取数据。

    为了性能起见,当我的应用程序启动时,在MainActivity中我从我的在线数据库中预取(使用DataRequester)两个自定义对象列表,并将它们存储在单个StateManager类中。这样,当用户转到MapActivity时,我们不需要再次重新加载相同的列表数据。

    我在所有3个活动中都有一个查找数据的方法,并在需要时使用DataRequester类加载它。数据在回调中返回。

    这是我的问题。我在3个不同的活动中有相同的代码,我想保留我的代码DRY,我认为最好将代码整合到BaseActivity类中,并让我的所有三个活动扩展该基类。所以我将所有重复的代码移动到基类,包括回调方法 ......现在我被卡住了。这个重要的提取我的数据工作发生在我的超级/基类...但子类活动不知道它。回调发生在超类中。

    如何在我的超类中下载代码并在子类中进行某种回调?解决这种编码困境的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在此处使用方法覆盖:

BaseActivity :您可以将其设为abstract,因为无论如何您都不会将其实例化。

void onDataReceived() {
    actOnData();
}

abstract void actOnData();

ChildActivity1扩展了BaseActivity

@Override
void actOnData() {
    // Act differently based on ChildActivity1 requirements.
}

ChildActivity2扩展了BaseActivity

@Override
void actOnData() {
    // Act differently based on ChildActivity2 requirements.
}