java - 一项或多项 Activity

标签 java android android-fragments android-activity

我对 Android 编程相当陌生,并且对我应该创建多少个 Activity 的最佳实践有疑问。

我正在开发一款拼图应用程序。目前,我有一个 Activity 和大约 15 个 fragment (SherlockFragment)。

我遇到的一个问题是 Activity 代码变得庞大且复杂。另一个挑战是 fragment 之间的通信。

据我所知,Fragment之间通信的最佳实践是在Fragment中创建一个接口(interface)并在Activity中实现该接口(interface)。

引用:http://developer.android.com/training/basics/fragments/communicating.html

示例: 我有一个联系人 fragment ,其中包含一个 ListView ,用户可以在其中选择一个或多个联系人(电话联系人)。通过遵循上面链接给出的指导方针,我可以在联系 fragment 中实现类似的东西:

public interface OnContactSelected{
   public void onContactSelected(Contact contact);
}
...
...

mCallback.onContactSelected(contact);

然后,我可以使用如下代码监听 Activity 中联系人的选择:

public Class PuzzleActivity extends SherlockFragmentActivity 
                    implements ContactFragment.OnContactSelected{
...
...
public void onActivityCreated(Contact contact){
   // Do something
}

我面临的问题是这样的:

Contact fragment 是一个独立的模块,用于不同的任务,例如:

1) 选择要添加为好友的联系人

2) 选择在线游戏的对手。

因此 Activity 中的 onContactSelected 实现取决于我现在正在做什么

public void onActivityCreated(Contact contact){
   // if{inInAddFriendMode())doThis(); else doThat();       
}

我正在考虑的是重构代码,为APP中的每个主要任务实现一个Activity,例如:

  • FriendActivity.java(显示和添加好友)
  • MultiplayerGameSetupActivity.java(配置新游戏的玩家数量、对手选择、难度级别等)
  • GameActivity.java(游戏本身)
  • SettingActivity.java

我还在考虑创建一个基础 Activity,上面的所有 Activity 都可以扩展。

对我来说,这似乎通过降低 Activity 代码的复杂性以及允许我在 Activity 中干净地实现 Fragment 接口(interface)来解决所有问题。

根据您的经验,这是一个好方法,还是我应该坚持一项 Activity ?

提前致谢。

最佳答案

我个人认为这听起来是个好主意。我发现自己多次遇到与您相同的情况,并且随着每次添加,保持这种方式变得越来越困难。

当我开始一个新项目时,我现在要做的第一件事就是创建一个基础 Activity 和一个由我的所有其他项目扩展的基础 fragment 。我发现这样做确实有助于保持它DRY而且由于一切都是分开的,因此更容易维护。

关于java - 一项或多项 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22482632/

相关文章:

java - 图像下载异步任务在测试异步任务完成之前开始启动

java - 如何捕获 spring-integration 套接字服务器中的错误?

java - 优化 GrabCut 在 opencv-java 中的性能

java - 为什么 liblinear 不预测多数类?

android - 在android中拖放具有多种布局的自动滚动

android - Adb pull 而不创建拉取文件夹

java - 创建自定义 View : how can I extend a class and access the base class's private member variables?

android - 如何在android中保存 fragment 状态?

android - fragment 中的选项卡布局在抽屉导航中不起作用

java - 为什么这个 fragment 没有得到 bundle ?