0

我有一个典型的双 UI 场景 - 一个类别列表,当单击一个类别时,会加载一个类别详细信息片段,其中包含该类别中的项目列表。在手机上,它被实现为卡片堆栈 UI,在类别列表顶部的单独活动中打开详细信息。在平板电脑上,它是左侧的类别列表,右侧是详细信息。

在详细信息窗格中,有一个用于添加项目的按钮。详细信息片段有一个活动所需的接口,带有一个 onClickAddItem 方法,它应该会弹出一个 DialogFragment 来询问您项目的详细信息并在它返回时添加它。

问题:平板版的一体机Activity和手机的独立详情Activity都需要相同的onClickAddItem逻辑。我的内心深处有一种下沉的感觉,正确的解决方案是将逻辑拉到另一个类中,但是需要创建数百万个文件来在 Android 中做简单的事情正在慢慢让我发疯,所以我希望我在这里忽略了另一个最佳实践。谢谢!

4

1 回答 1

1

如果您的“添加”按钮位于详细信息片段中,则没有理由在活动中处理单击事件。我认为您应该将单击事件处理放在您的详细信息片段中。

为什么要在活动中保留所有数据库访问?确保您正确地抽象了数据库访问(ContentProvider例如使用 a ),并且在任何有意义的地方都不要害羞地使用您的抽象。使用 a 添加项目ContentProvider应该很简单:

getContentResolver().insert(myUri, myNewItemContentValues);

如果您需要显示一个对话框,只需从详细片段中获取对当前活动的引用,然后使用它来显示您的对话框。

如果多个片段共享相同的功能,您可能需要编写一个简单的辅助类,其中包含一些方法,例如:

public void showAddItemDialog(Activity activity)
于 2013-09-06T20:02:40.273 回答