完成后将数据从Activity传递到Fragment

时间:2015-06-23 08:15:26

标签: android android-fragments android-animation

我有一个场景,我从片段开始一个活动。在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);

3 个答案:

答案 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 中传递包。