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

我有一个Android应用程序。 其中一个活动有两个片段。

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

我在我的活动类中创建了变量,并像这样从我的片段中分配数据。

((MainActivity)getActivity()).resultObj = gson.fromJson(HomeCardString.toString(), HomeCardResult.class); 

它完全分配,因为我在这样的相同片段中使用了这些数据

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

哪个效果很好。

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

 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

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


 (In your Activity) // You create a bundle Bundle bundle = new Bundle(); // Add data to your the bundle bundle.putInt("key", your_data); //eg adding integer, you can do similar for other data types // Pass bundle to the fragment using setArguments() your_fragment.setArguments(bundle); 

 (In your Fragment class) Bundle bundle = getArguments(); Integer your_data = bundle.getInt("key", default_value); 

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

可以使用可以传递给片段的数据类型。 请问你是否遇到任何问题。