1

我正在开发一个 Android 应用程序并面临重构问题;我的大部分活动都需要某些通知功能,即显示 Toast 消息。这是由扩展 Activity 的超类处理的

活动

-通知活动

--我的活动A

--我的活动B

等等。然后我决定重构我的两个活动,它们使用由数据库游标填充的 Spinner。层次结构现在如下所示:

活动

-MyNotificationActivity

--我的活动A

--我的活动B

--MySpinnerActivity(设置 Spinner 和 Cursor)

---MySpinnerActivityA

---MySpinnerActivityB

我现在面临的问题是——我正在编写一个新的 Activity 类,它也将使用数据库游标,但要填充 ListView。我想扩展 ListView 以利用内置的 Android 列表管理,但我还需要访问我的类层次结构中已经存在的 Cursor 设置方法和 Notification 方法。

我真的很想避免代码重复。有什么建议么?

干杯,巴里

4

1 回答 1

1

在处理类似的问题(一堆显示 ProgressDialogs 的活动)时,我避免使用 ProgressDialog 功能扩展超类。

相反,我编写了一个单独的类“LoadingDialog”来处理它。在需要此功能的每个 Activity 中,它都会有一个 LoadingDialog 类的实例作为字段。而且,对于任何依赖于上下文或活动的功能,活动可以传递对自身的引用,或根据需要公开自身的其他位。

在您的情况下,也许您可​​以编写某种封装通用功能的“ToasterFunctionClass”,并在每个适当的活动中都有一个实例。

public class ListStuff extends ListActivity {

    private ToastFunctionClass toaster = new ToastFunctionClass(this); //pass yourself so that toaster has a Context in which to do UI stuff.

    onSomethingHappened() {
        toaster.showToast("Something happened");
    }

}
于 2011-04-28T20:24:08.550 回答