我有一个典型的双UI场景 - 一个类别列表,当单击一个类别时,会加载一个类别详细信息片段,其中包含该类别中的项目列表。在电话上,它被实现为堆栈的用户界面,在类别列表顶部的单独活动中打开详细信息。在平板电脑上,它是左侧的类别列表,右侧是详细信息。
在详细信息窗格中,有一个用于添加项目的按钮。详细信息片段有一个活动所需的接口,带有onClickAddItem方法,该方法应该调出一个DialogFragment来询问项目的详细信息,并在返回时添加它。
问题:平板电脑版的一体化活动和电话的独立细节活动需要相同的onClickAddItem逻辑。在我的直觉中有一种沉闷的感觉,正确的解决方案就是将这种逻辑推向另一个类,但是需要在Android中创建数百万个文件来做简单的事情,这让我感到疯狂,所以我希望还有另一个我在这里俯瞰的最佳实践。谢谢!
答案 0 :(得分:1)
如果您的“添加”按钮位于详细信息片段中,则没有理由处理活动中的click事件。 我认为你应该将click事件处理放在你的细节片段中。
为什么要在活动中保留所有数据库访问权限?确保你正确地抽象数据库访问(例如使用ContentProvider
)并且不要害羞地在任何有意义的地方使用抽象。使用ContentProvider
添加项目应该非常简单:
getContentResolver().insert(myUri, myNewItemContentValues);
您需要显示一个对话框,只需从详细信息片段中获取当前活动的引用,然后使用它来显示对话框。
如果多个片段共享相同的功能,您可能需要使用以下方法编写一个简单的帮助器类:
public void showAddItemDialog(Activity activity)