【问题标题】:Android - How to pass data between fragmentsAndroid - 如何在片段之间传递数据
【发布时间】:2015-08-21 03:01:14
【问题描述】:

我正在尝试将数据从可点击的 TextView 传递到片段之间的 EditText。现在我可以在单击 TextView 时导航到另一个片段。这是CategoryFragment的编码:

public boolean onChildClick(ExpandableListView parent, View v,
                                        int groupPosition, int childPosition, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(
                        getActivity().getApplicationContext(),
                        listDataHeader.get(groupPosition)
                                + " : "
                                + listDataChild.get(
                                listDataHeader.get(groupPosition)).get(
                                childPosition), Toast.LENGTH_SHORT)
                        .show();
                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

                HomeFragment fragment = new HomeFragment();
                fragmentTransaction.replace(R.id.frame_container, fragment);
                fragmentTransaction.commit();
                return false;
            }

我觉得可以这样做是因为toast能够检索到listDataChild里面的字符串。我似乎无法在一夜之间解决的是如何检索 listDataChild 字符串并将其从 Fragment 1 传递到 Fragment 2,其中 Fragment 2 包含一个 EditText 框。如何将字符串从 textview 放到 edittext?

【问题讨论】:

标签: java android android-fragments expandablelistview


【解决方案1】:

您可以使用 bundle 在片段之间传递数据...

Bundle args = new Bundle();

HomeFragment fragment = new HomeFragment();

args.putInt("key", value);

fragment .setArguments(args);

【讨论】:

    【解决方案2】:

    在 CategoryFragment 中使用Bundle 传递数据

    HomeFragment fragment = new HomeFragment();
    Bundle bundle = new Bundle();
    bundle.putString("key", listDataChild.get(
                                    listDataHeader.get(groupPosition)).get(
                                    childPosition));
    fragment.setArguments(bundle);
    

    HomeFragment 在 onActivityCreated(....) 中使用此代码

    Bundle bumdle = getArguments();
    if (bundle  != null)
     String value = bundle.getString("key");
    

    【讨论】:

    • 使用构造函数将值传递给 Fragment 是一种不好的做法。您应该改用 Bundles。
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多