碎片与活动和某些方法的去处



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

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

现在,如果第二片上的某个按钮需要用自己的片段调用另一个活动,那又如何呢?在活动或片段中,按钮侦听器应该在哪里?新活动应该从哪里开始?第二片是否需要致电内容提供商或服务呢?那应该去哪里?那OnActivityResult呢?

我感觉到任何跨越活动边界(开始新活动,获得结果等)的任何东西都应该参与活动,但这迫使我将我的活动绑定到我的片段上,并用回调很重,所以现在我不知道。我现在开始认为活动只能处理加载和切换片段以使它们分开,并且过程间和活动间(甚至是碎片间)都应该在片段中进行。

编辑:我认为在方向更改上保留状态可能也会在此决定中发挥作用!

您可以从片段引起的活动启动活动。而且,您也可以在片段中收到on activityResult呼叫。但是请记住,要获得碎片活动的结果,在活动中,您已经实现了这样的on活动方法。

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

否则结果将不会碎片。参数requestCode可以用来与各种起始ActactivityForresult调用不同的结果。

我发现了一个非常有用的网站。它回答了我的问题,并有很多有关片段和活动以及它们如何联系的信息:

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

最新更新