【发布时间】:2015-06-23 19:48:45
【问题描述】:
我有一个从片段开始活动的场景。在活动中,我必须将一些数据发送回片段。为此,我使用 startActivityForResult(intent, requestCode) 从 Fragment 启动 Activity,然后在 onActivityResult() 中捕获结果。
虽然这段代码对我来说运行良好,但问题是我正在使用SceneTransitionAnimation 将ImageView 从 Fragment 动画化到 Activity。这需要将一个包从 Fragment 传递到 Activity。问题是startActivityForResult()在Fragments中只取了两个参数,所以动画就断了。
所以,我想问一下如何确保在保持动画正常工作的同时从 Activity 获取数据?有没有其他方法可以将数据从 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);
【问题讨论】:
-
在activity和fragment中使用setResult(),在onResume()方法中访问
-
我已经在使用它了。我已经指定了,但它破坏了动画,因为我无法将 bundle 作为第三个参数传递。我希望这一切都能奏效,我能够部分实现。
-
比使用 sharedpreference 或广播接收器
-
将该数据变量设为静态并在 onResume() 中获取值
-
@ShoebSiddique static 不应以这种方式使用,因为在某些情况下它可能会变为 null 并引入错误。所以,我一般会避免它。
标签: android android-fragments android-animation