gpt4 book ai didi

android - 从另一个 Activity 返回到 Activity-A 的特定 fragment

转载 作者:太空狗 更新时间:2023-10-29 16:27:32 25 4
gpt4 key购买 nike

enter image description here

我打开 Message-Fragment来自 Activity-A然后打开Camera-Fragment来自 Message-Fragment .现在当前 fragment 是 Camera-Fragment我上面有媒体 slider 。现在我有两个选择,一个是ImagePreview-Fragment如果我单击媒体 slider 上的图像项目,则会打开它。其他是VideoPreview-Activity如果单击媒体 slider 上的视频项目,则会打开。所以有一个点击视频项目的条件。如果我单击媒体 slider 上的视频项目并且视频大小大于 10 MB,我打开 VideoTrim-Activity修剪完成后,我调用 VideoPreview-Activity .

我正在从 VideoPreview-Activity 发送媒体或 ImagePreview-Fragment .所以当我发送媒体时,我想返回到 Message-Fragment与数据。

我怎样才能回到Message-Fragment来自 VideoPreview-Activity (从 Camera-Fragment 打开)和 VideoPreview-Activity (从 VideoTrim-Activity 打开)。另外,如果你能帮助我了解如何从 ImagePreview-Fragment 返回至 Message-Fragment我将不胜感激。这些是单独的问题。希望你能帮上忙。

我通过添加到后台堆栈来打开 fragment addToBackStack(fragmentTag) .

已编辑:VideoPreview-Fragment 必须是 VideoPreview-Activity并且 VidoTrim-Fragment 必须是 VideoTrim-Activity。这些是 Activity 。就像您在图片上看到的那样。

最佳答案

如果我理解正确,我想我有一个解决方案。我将忽略导航的所有其他方面,只关注您想要从 VideoPreviewActivity 转到 MainActivity 并调整 fragment 堆栈的事实,并且它正在被触发来自完成按钮(或类似的东西)但不是后退按钮。

简单的方法是使用 Activity 结果函数 startActivityForResult,这将允许您在主 Activity 中使用 onActivityResult 函数来传回信息。但是,您可能会通过 VideoTrimActivity 导航到 VideoPreviewActivity,因此您必须通过两个 Activity 传回此信息,这会有点困惑。

所以我提出的解决方案有几个步骤。

不是在 VideoPreviewActivity 上调用 finish() 而是触发创建 MainActivity

的 Intent
Intent intent = new Intent(context, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra()//Add your return data here
startActivity(intent)

这不会启动一个新的 MainActivity,而是返回到前一个并完成任务任务中位于其上方的所有 Activity 。

将此函数添加到 MainActivity

@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
}

然后在 onStart 函数中,您可以检查您的 Intent ,看看是否有从 VideoPreview 返回的数据,并删除您不再需要的 fragment 。

if (getIntent().hasExtra(YOUR_DATA)) {
if (getSupportFragmentManager().getBackStackEntryCount() > 0)
getSupportFragmentManager(). popBackStackImmediate("MESSAGE_TAG", 0);
}

其中“MESSAGE_TAG”是 ft.addToBackStack("MESSAGE_TAG") 调用中使用的标签。

这将清除事务中所有带有 addToBackStack 的 fragment 。 MessageFragment 将再次开始其生命周期调用,您可以从中访问数据

getActivity().getIntent()

关于android - 从另一个 Activity 返回到 Activity-A 的特定 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com