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

kun*_*unt 5 android transitions android-5.0-lollipop

我正在玩棒棒糖sceneTransitionAnimations.

为了得到它的工作,你需要实现getWindow().setExitTransition()+ getWindow().setReenterTransition()在调用活动的onCreate,而getWindow().setEnterTransition()+ getWindow().setReenterTransition()在所谓的活动的onCreate.

然后,当你打电话时,startActivity你必须通过呼叫传递Bundle给你获得的那个功能ActivityOptions.makeSceneTransitionAnimation(getActivity()).toBundle().

这很好用.但是我需要开始一项活动startActivityForResult.这个函数只需要a Intent和a requestCode,但不需要Bundle.将捆绑包放入意图使用putExtras不起作用.

当我想使用时,如何让这些漂亮的Lollipop过渡工作startActivityForResult

在我被问到代码时编辑:

我在片段中,我有一个项目列表.单击某个项目时,我会启动另一个活动.

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

现在这里有两个区别.这个工作:

getActivity().startActivity(intent, bundle);
Run Code Online (Sandbox Code Playgroud)

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

这其中并没有工作:

intent.putExtras(bundle);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

kun*_*unt 9

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

我做错了尝试从Fragment开始,它没有实现 - 同样startActivity(Intent intent, Bundle bundle)- 所以你需要调用getActivity().startActivityForResult(Intent intent, int requestCode, Bundle options).

  • 但这不意味着onActivityResult会被调用而不是片段吗? (5认同)