我正在开发一个 Android 应用程序,但遇到了重构问题;我的大部分 Activity 都需要某些通知功能,即显示 Toast 消息。这是由扩展 Activity 的父类(super class)处理的
Activity
-NotificationActivity
--MyActivityA
--MyActivityB
等等。然后我决定重构我的两个 Activity ,它们使用由数据库游标填充的 Spinner。层次结构现在看起来像这样:
Activity
-MyNotificationActivity
--MyActivityA
--MyActivityB
--MySpinnerActivity(设置微调器和光标)
---MySpinnerActivityA
---MySpinnerActivityB
我现在面临的问题是 - 我正在编写一个新的 Activity 类,它也将使用数据库 Cursor 但要填充 ListView。我想扩展 ListView 以利用内置的 Android 列表管理,但我还需要访问 Cursor 设置方法和 Notification 方法,它们已经存在于我的类层次结构中。
我真的很想避免代码重复。有什么建议吗?
干杯, 巴里
最佳答案
在处理类似问题(一堆显示 ProgressDialogs 的 Activity )时,我避免扩展具有 ProgressDialog 功能的父类(super class)。
相反,我编写了一个单独的类“LoadingDialog”来处理它。在每个需要此功能的 Activity 中,它都有一个类 LoadingDialog 的实例作为字段。而且,对于任何依赖于上下文或 Activity 的功能, Activity 可以传递对自身的引用,或根据需要公开自身的其他部分。
在您的情况下,也许您可以编写某种封装通用功能的“ToasterFunctionClass”,并在每个适当的 Activity 中都有一个实例。
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");
}
}
关于java - 需要合适的安卓模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823915/