碎片与活动和某些方法去哪里

时间:2014-03-07 18:41:48

标签: android android-fragments android-activity

我一直在从活动到活动和片段的过渡,但我对活动应该有多少功能以及片段中有多少感到困惑。我最初的想法是,活动只是加载一个片段(许多例子在线工作这种方式)。这很好,但是当事情变得更复杂时会发生什么?这是一个场景:

您有一个活动加载两个片段,但只显示一个片段。单击按钮后,第一个片段将被隐藏,第二个片段将显示。很容易。

现在,如果第二个片段上的某个按钮需要使用它自己的片段调用另一个活动呢?回调应该放在按钮监听器,活动或片段中的哪个位置?新活动应该从哪里开始?如果第二个片段需要调用内容提供者或服务呢?应该去哪儿?那么onActivityResult呢?

我觉得任何跨越活动边界的东西(开始新的活动,获得结果等)都应该进入活动,但是这迫使我将我的活动与回调相结合,所以现在我不知道。我现在开始认为活动应该只处理加载和切换片段以使它们分离,并且进程间和活动间(甚至片段间)调用都应该在片段内发生。

编辑:我认为保留状态也可能会影响到这个决定!

2 个答案:

答案 0 :(得分:0)

您可以从Fragment的结果启动Activity甚至Activity。而且你也可以在片段中接收onActivityResult调用。但请记住,要从片段中的活动中获取结果,在Activity中您已经实现了onActivityResult方法,就像这样。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}

否则结果将无法分段。参数requestCode可用于区别于各种startActivityForResult调用的结果。

答案 1 :(得分:0)

我发现了一个非常有用的网站。它回答了我的问题,并提供了很多关于碎片和活动的信息以及它们应该如何相关:

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