我有一个有按钮的主要活动。按下按钮打开一个子活动。子活动内部是一个按钮。按下该按钮会打开一个隐含的意图(YouTube 视频)。这是我在子活动中的代码:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("some_youtube_link")));
视频开始时很好,但是当我按下它时,它只会继续回到 YouTube 应用程序中,这是不可取的。所以我添加了这一行:
finish();
...在开始隐式意图之后的下一行。现在,当我按回视频时,它会一直回到主要活动。但我希望它回到启动它的活动(子活动)。我怎样才能做到这一点?
编辑:我的被标记为这个问题的重复。但是我的问题是不同的。而在引用的问题中,OP 希望 YouTube 应用程序在视频完成后关闭并返回到他的应用程序,而不必按下后退按钮,我希望后退按钮带我回到启动隐式意图的活动而不是父活动。
更新:我删除了这条线,它在实际设备finish();
上工作得很好,行为正是我想要的。但是在模拟器上,如果我在加载 YouTube 应用程序后足够快地按下返回,那么我将根据需要返回到子活动。但是,如果我等待几秒钟然后按回,它将继续转到 YouTube 视频的开头。无论如何,我不再有问题了,因为我关心的是设备而不是模拟器,但我仍然不明白为什么模拟器会这样。
更新:好的,问题仍然存在。当我单击播放按钮时,会打开一个对话框,要求我选择我的应用程序(YouTube、网络浏览器等)。如果我选择 YouTube,然后选择“仅一次”选项而不是“始终”选项,那么当 YouTube 打开并按下后退按钮时,它将返回到子活动(根据需要)并显示“选择应用程序“ 再次。我必须再次按下以摆脱此弹出窗口。这很烦人,但我可以处理它。问题是当我选择“始终”选项时。现在,当我从 YouTube 回复时,它会不断重新打开同一 YouTube 视频,我无法返回我的应用程序。似乎有一个中间活动(在我的应用程序和 YouTube 之间)被执行,这个中间活动是“