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

时间:2014-07-24 07:10:15

标签: java android android-fragments fragment

我有一个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

1 个答案:

答案 0 :(得分:3)

确定这是您从活动

向片段发送数据的方式
(In your Activity)

// You create a bundle

Bundle bundle = new Bundle();

// Add data to your the bundle

bundle.putInt("key", your_data); //e.g. 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);

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