我有一个场景,我从片段开始一个活动。在Activity中,我必须将一些数据发送回片段。为此,我使用startActivityForResult(intent, requestCode)
从片段中启动活动,然后在onActivityResult()
中捕获结果。
虽然这段代码对我来说很好,但问题是我使用SceneTransitionAnimation
来动画ImageView
从Fragment到Activity。这需要将一个包从Fragment传递给Activity。问题是startActivityForResult()
只在片段中占用两个参数,因此动画正在破碎。
所以,我想问一下如何确保在保持动画正常工作的同时从活动中获取数据?有没有其他方法可以将数据从Activity发送到Fragment?
P.S - 我可以使用SharedPreferences
并将数据保存在Activity中,完成它,然后在Fragment的onResume()
中读取SharedPreferences
中的数据。但是,我想避免使用它。
更新: -
// This is the shared view
final ImageView imageView = (ImageView) view.findViewById(R.id.ivProperty);
final Intent intent = new Intent(getActivity(), PropertyDetailsScreen.class);
final View sharedView = imageView;
final String transitionName = getString(R.string.square_blue_name);
// This is the animation
final ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat
.makeSceneTransitionAnimation(getActivity(), sharedView, transitionName);
// Getting bundle from the animation
final Bundle bundle = transitionActivityOptions.toBundle();
// Starting the activity with animation
getActivity().startActivity(intent, bundle);
答案 0 :(得分:0)
这需要将一个包从Fragment传递给Activity。问题是startActivityForResult()只接受Fragments中的两个参数
即使您使用startActivityForResult
Intent intent = new Intent(NextActivity.class, this);
Bundle bundle = new Bundle();
...
intent.putExtras(bundle);
startActivityForResult(intent, REQUEST_CODE);
答案 1 :(得分:0)
使用getter,setter方法。在活动中设置数据并以片段形式获取数据。
答案 2 :(得分:0)
使用 ActivityCompat ,您可以实现相同的目标,as mentioned here in documentation我们可以在 startActivityForResult 中传递包。