我正在玩Lollipop sceneTransitionAnimations
。
要使其发挥作用,您需要在调用活动的getWindow().setExitTransition()
中实施getWindow().setReenterTransition()
+ onCreate
,
被叫活动getWindow().setEnterTransition()
中的getWindow().setReenterTransition()
+ onCreate
。
然后,当您致电startActivity
时,您必须通过致电Bundle
将ActivityOptions.makeSceneTransitionAnimation(getActivity()).toBundle()
传递给您获得的该功能。
这很好用。但是,我需要使用startActivityForResult
启动活动。此功能只需Intent
和requestCode
,但不需要Bundle
。使用putExtras
将捆绑包放入intent中不起作用。
当我想使用startActivityForResult
时,如何让这些漂亮的Lollipop过渡工作?
编辑,因为我被要求提供代码:
我在片段中,我有一个项目列表。单击某个项目时,我会启动另一项活动。
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);
Fragment不提供此功能,因此我必须使用其父活动 - 因此getActivity()
。
这个不工作:
intent.putExtras(bundle);
startActivity(intent);
答案 0 :(得分:9)
感谢Squonk,我逐渐意识到我尝试使用的方法,startActivityForResult(Intent intent, int requestCode, Bundle options)
确实存在。
我做错了尝试从片段开始,没有实现 - 与startActivity(Intent intent, Bundle bundle)
相同 - 所以你需要调用getActivity().startActivityForResult(Intent intent, int requestCode, Bundle options)
。