我正在开发Android应用程序,面临重构问题;我的大部分活动都需要某些通知功能,即显示Toast消息。这由扩展Activity
的超类处理活动
-NotificationActivity
- MyActivityA
- MyActivityB
等等。然后我决定重构我的两个活动,这些活动使用了一个由数据库游标填充的Spinner。层次结构现在看起来像这样:
活动
-MyNotificationActivity
- MyActivityA
- MyActivityB
- MySpinnerActivity(设置Spinner和Cursor)
--- MySpinnerActivityA
--- MySpinnerActivityB
我现在面临的问题是 - 我正在编写一个新的Activity类,它也将使用数据库Cursor但填充ListView。我想扩展ListView以利用内置的Android List管理,但我还需要访问已经存在于我的类层次结构中的Cursor设置方法和Notification方法。
我真的很想避免代码重复。有什么建议吗?
干杯, 百里
答案 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");
}
}