需要一个合适的Android模式

时间:2011-04-28 19:29:04

标签: java android design-patterns hierarchy superclass

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

的超类处理

活动

-NotificationActivity

- MyActivityA

- MyActivityB

等等。然后我决定重构我的两个活动,这些活动使用了一个由数据库游标填充的Spinner。层次结构现在看起来像这样:

活动

-MyNotificationActivity

- MyActivityA

- MyActivityB

- MySpinnerActivity(设置Spinner和Cursor)

--- MySpinnerActivityA

--- MySpinnerActivityB

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

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

干杯, 百里

1 个答案:

答案 0 :(得分:1)

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

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

在你的情况下,也许你可以写一些封装了常用功能的“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");
    }

}