2015-06-23 24 views
0

我有一个从片段开始活动的场景。在活动中,我必须将一些数据发送回片段。为此,我使用startActivityForResult(intent, requestCode)从片段开始活动,然后获取onActivityResult()中的结果。将数据从活动传递到片段完成

虽然这段代码对我来说工作正常,但问题是我正在使用SceneTransitionAnimation将从片段到活动的ImageView设置为动画。这需要将一个包从Fragment传递给Activity。问题是startActivityForResult()只在碎片中占用两个参数,所以动画正在打破。

所以,我想问我如何确保在保持动画正常工作的同时从Activity获取数据?有没有其他方法可以通过它将Activity中的数据发送到Fragment?

P.S-我可以使用SharedPreferences和保存活动数据,完成它,并在片段的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

在活动和片段中使用setResult(),在onResume()方法中访问它 –

+0

我已经在使用它。我已经指定了,但是由于我无法传入包作为第三个参数,因此它正在打破动画。我希望所有这些都能够工作,我能够部分实现。 –

+0

比使用sharedpreference或广播接收机 –

回答

0

这需要一个包被传递从片段到活动。问题是,startActivityForResult()只需要在片段

两个参数,你可以通过捆绑到下一个活动,即使您正在使用startActivityForResult

Intent intent = new Intent(NextActivity.class, this); 
    Bundle bundle = new Bundle(); 
    ... 
    intent.putExtras(bundle); 
    startActivityForResult(intent, REQUEST_CODE); 
+0

我曾尝试过,但在这种情况下动画不起作用。这个bundle不是一个普通的bundle,而是一堆'SceneTransitionAnimation',当这种方式通过的时候不起作用。 –

+0

您是否可以在'startActivityForResult'和'startActivity'的情况下发布代码如何设置SceneTransitionAnimation包? –

+0

你确定,在5分钟内。 –

0

使用getter,setter方法。在活动中设置数据并获取片段中的数据。

+0

我该怎么做? –

+0

创建一个自定义类定义该类中的变量类型,然后为这些变量生成getter,setter方法。使用该类的对象访问这些方法 –

+0

如何将该类的对象从Activity传递给fragment? –

0

使用ActivityCompat可以acheive相同,as mentioned here in documentation其提到的,我们可以在startActivityForResult通过捆绑。

+0

我知道,但它将如何帮助片段? –

+0

它似乎应该 – Akhil