2017-04-24 65 views
0

考虑这种情况: 有mainActivity。形成这个活动,我们可以调用两个片段:fragmentAfragmentB如何获得片段中相同的活动实例?

mainActivity有一个吸气器getValue和一个设定器setValue

大多数情况下,这是应用程序的工作原理:mainActivity已创建。从它fragmentA被创建。在fragmentA中按下后退按钮后,应用程序将移回mainActivity并转至fragmentB

我想要做的是,我想setValuemainActivityfragmentA,并得到fragmentB该值。

我无法做到这一点,因为它看起来像两个片段不具有相同的活动实例。

这是我尝试从fragmentAfragmentB访问mainActivity制定者/吸气:((MainActivity)getContext()).getValue();

我在做什么错?

+0

请在这里MainActivity和片段的发布您的代码之间的值。 –

+0

听起来像这样。 http://stackoverflow.com/questions/24777985/how-to-implement-onfragmentinteractionlistener –

+0

@marius什么是你传递给第二个片段的getValue? –

回答

0

创建在活性的Bunde的对象束

Bundle bundle = new Bundle(); 

插入值(可以将多个值)
键可以是任意字符串,并应是唯一的每个值

bundle.setString(key,"value"); 

创建对象的相应片段并将其附加到它

fragmentobject.setArguments(bundle); 

在接收片段创建包对象

Bundle fragmentbundle = getArguments(); 
String value = fragmentbundle.getString(key); 

你这是怎么传的片段和活动或活动和活动

+0

当然,这可能是最“正确”的做法。但是,我还需要传递BigDecimal值,并且尽我所知,您不能(或者您需要将其转换为String)。 – Marius

+0

'字符串值=“1,000,000,000.999999999999999”; BigDecimal money = new BigDecimal(value.replaceAll(“,”,“”)); System.out.println(money);' –

+0

@Marius'BigDecimal'是'Serializable'。 –

0

我会建议使用以下方法:

((MainActivity) getActivity()).getValue; 

同时,确保在MainActivitygetValue()方法设置为公开。

我希望这有助于。

+0

尽我所知 - 你应该使用getActivity进行与UI相关的工作getContext了解某些应用状态。 – Marius

+0

那么,我使用我提到的用于发送和接收来自我主要活动的数据的方法。如果我误解了你,请纠正我。 –

+0

将你的片段连接到任何一个活动是一个糟糕的设计 –

相关问题