将 Bundle 传递给 startActivityForResult 以实现场景转换

2024-03-27

我正在玩棒棒糖sceneTransitionAnimations.

为了让它发挥作用,你需要实施getWindow().setExitTransition() + getWindow().setReenterTransition()在调用活动的onCreate, and getWindow().setEnterTransition() + getWindow().setReenterTransition()在被调用的活动中onCreate.

然后,当你打电话时startActivity你必须通过一个Bundle到您通过调用获得的函数ActivityOptions.makeSceneTransitionAnimation(getActivity()).toBundle().

这很好用。但是我需要使用开始一项活动startActivityForResult。该函数只需要一个Intent and a requestCode, 但不是Bundle。使用以下方法将捆绑包放入意图中putExtras不工作。

当我想使用时,如何让这些漂亮的棒棒糖过渡发挥作用startActivityForResult?

当我被要求提供代码时进行编辑:

我在一个片段中,我有一个项目列表。单击某个项目后,我会开始另一个活动。

Intent intent = new Intent(context, otherActivity.class);
Bunde bundle = null; 
if (android.os.Build.VERSION.SDK_INT >= 21)
    bundle = ActivityOptions.makeSceneTransitionAnimation(getActivity()).toBundle();

现在有两个区别。这个有效:

getActivity().startActivity(intent, bundle);

片段不提供此功能,因此我必须使用其父活动 - 因此getActivity().

这个有not work:

intent.putExtras(bundle);
startActivity(intent);

感谢 Squonk,我开始意识到我尝试使用的方法,startActivityForResult(Intent intent, int requestCode, Bundle options)确实存在。

我犯了一个错误,试图从一个片段开始,它没有实现 - 与startActivity(Intent intent, Bundle bundle)- 所以你需要打电话getActivity().startActivityForResult(Intent intent, int requestCode, Bundle options) .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Bundle 传递给 startActivityForResult 以实现场景转换 的相关文章

随机推荐