Java 将数据从片段分配给活动变量,并在另一个片段中获取变量

Java 将数据从片段分配给活动变量,并在另一个片段中获取变量,java,android,android-fragments,fragment,Java,Android,Android Fragments,Fragment,我有一个android应用程序。它们有一个活动和两个片段 当我的应用程序启动时,它将数据分配给他的活动中的一个变量。然后点击一个按钮,第二个片段打开,它从活动中分配的活动中获取数据。但它返回null。到目前为止我所尝试的是 我在我的activity类中创建了一个变量,并像这样从片段中分配数据 ((MainActivity)getActivity()).resultObj = gson.fromJson(HomeCardString.toString(), HomeCardResult.class

我有一个android应用程序。它们有一个活动和两个片段

当我的应用程序启动时,它将数据分配给他的活动中的一个变量。然后点击一个按钮,第二个片段打开,它从活动中分配的活动中获取数据。但它返回null。到目前为止我所尝试的是

我在我的activity类中创建了一个变量,并像这样从片段中分配数据

((MainActivity)getActivity()).resultObj = gson.fromJson(HomeCardString.toString(), HomeCardResult.class);
showFragment(FRIENDLIST, true);
FriendListActivity asdss = new FriendListActivity(); // this is my second fragment
asdss.populateFriendList();
它分配得非常完美,因为我在同一个片段中使用了这些数据,就像这样

HomeCardListItemAdapter adapter = new HomeCardListItemAdapter(getActivity(),
            R.layout.home_cardlist_item, ((MainActivity)getActivity()).resultObj.HomeData.FriendSummary);
这很好用

但是,当我单击打开第二个片段时,它只显示布局,而不执行任何覆盖方法。与oncontentview等类似,所有这些方法都是在活动开始时执行的。但当时我还没有将数据分配给我的活动变量。因此,我创建了自己的方法,并在显示第二个片段后立即调用它

((MainActivity)getActivity()).resultObj = gson.fromJson(HomeCardString.toString(), HomeCardResult.class);
showFragment(FRIENDLIST, true);
FriendListActivity asdss = new FriendListActivity(); // this is my second fragment
asdss.populateFriendList();
在第二个片段中,我使用了这个代码的方法

public void populateFriendList()
{
    FriendList = ((MainActivity)getActivity()).resultObj.HomeData.Friends;
    String asd = FriendList.toString();
    asd = asd + "asdasda";
}
但是在[FriendList=((MainActivity)getActivity()).resultObj.HomeData.Friends;]这一行之后,它显示了invocationtargetexception.class文件,其中未找到写入的源

在logcat中,会出现此错误


07-24 12:06:47.204:E/AndroidRuntime(3926):java.lang.NullPointerException

好的,这就是从活动向片段发送数据的方式




注意:您甚至可以将对象传递给片段。为此,您需要将对象类设置为“Parcelable”,并调用
bundle.putParcelable(“key”,您的_对象)


尝试一下可以传递给片段的数据类型。请务必询问您是否遇到任何类型的问题。

您通常使用意图而不是直接访问活动来提供片段数据。