我对 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/