一项或多项活动

时间:2014-03-18 14:40:20

标签: java android android-fragments android-activity

我对Android编程很新,并且对我应该创建多少活动的最佳实践提出疑问。

我正在开发益智应用程序。目前,我有一个单一活动和大约15个碎片(SherlockFragment)。

我遇到的一个问题是活动代码变得庞大而复杂。另一个挑战是片段之间的沟通。

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

参考:http://developer.android.com/training/basics/fragments/communicating.html

实施例: 我有一个Contact片段,其中包含一个ListView,用户可以在其中选择一个或多个联系人(电话联系人)。按照上面链接给出的指导原则,我可以在Contact Fragment中实现类似的东西:

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

mCallback.onContactSelected(contact);

然后,我可以使用以下代码听取活动中联系人的选择:

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

我面临的问题是:

Contact片段是用于不同任务的独立模块,例如:

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

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

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

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

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

  • FriendActivity.java(显示和添加好友)
  • MultiplayerGameSetupActivity.java(配置有多少玩家,对手选择,难易程度等的新游戏)
  • GameActivity.java(游戏本身)
  • SettingActivity.java

我也在考虑创建一个基本活动,上面的所有活动都会扩展。

对我而言,这似乎通过使Activity代码不那么复杂来解决所有问题,并允许我在活动中干净地实现Fragment接口。

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

我个人认为这听起来不错。我发现自己处于和你几次相同的状态,并且每次添加都会越来越难以保持这种状态。

当我开始一个新项目时,我现在要做的第一件事是创建一个基本活动和一个我的其他人扩展的基础片段。我发现这样做真的有助于保持它DRY,因为一切都分开了很容易维护。