Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段与活动以及某些方法的去向_Android_Android Fragments_Android Activity - Fatal编程技术网

Android 片段与活动以及某些方法的去向

Android 片段与活动以及某些方法的去向,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我一直在从活动过渡到活动和片段,但我对活动中应该包含多少功能以及片段中应该包含多少功能感到有点困惑。我最初的想法是,该活动只是加载了一个片段(许多在线示例都是这样工作的)。这很好,但是当事情变得更复杂时会发生什么呢?下面是一个场景: 您有一个加载两个片段的活动,但只显示一个片段。单击按钮后,第一个片段隐藏,第二个片段显示。很简单 现在,如果第二个片段上的某个按钮需要用它自己的片段调用另一个活动呢?按钮侦听器的回调应该放在哪里,在活动中还是片段中?新活动应该从哪里开始?如果第二个片段需要调用内容提

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

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

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

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


编辑:我认为在方向改变时保留状态也可能会影响这个决定

您可以为来自片段的结果启动活动甚至活动。您还可以在片段中接收onActivityResult调用。但请记住,要从片段中的活动中获得结果,在活动中您必须实现如下的onActivityResult方法

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

否则结果将不会得到碎片。参数requestCode可用于区分各种startActivityForResult调用的结果。

我发现了一个非常有用的站点。它回答了我的问题,并提供了大量关于片段和活动以及它们应该如何关联的信息:


如果您提供了一个代码示例,专门说明您遇到的问题,这将是一个更好的问题。这听起来像是一个基于观点的问题……我认为这更像是一个理解为什么以及何时使用片段的问题……对不起,我认为这并没有真正回答我的问题。