在android中传递片段之间的数据数组

时间:2017-08-22 12:24:14

标签: android android-fragments

我试图在片段之间传递category[](类别是模型)结构.....

我可以使用

传递ArrayList<String>
fragment = new FrgAddItemInfo();
                        fragment.setArguments(mBundle);
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.addToBackStack(FrgAddItemInfo.class.getSimpleName());
                        fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
                        fragmentTransaction.add(R.id.container, fragment, FrgAddItemInfo.class.getSimpleName());
  1. 但我无法通过category[]
  2. 如何解决此问题

3 个答案:

答案 0 :(得分:3)

尝试创建片段的构造函数并使用它在它们之间传递对象。

在片段FrgAddItemInfo中,添加以下内容:

   /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param category Parameter 1.
     * @return A new instance of fragment FrgAddItemInfo.
     */
    public static FrgAddItemInfo newInstance(Category[] category) {
        FrgAddItemInfonewInstance fragment = new FrgAddItemInfonewInstance();
        fragment.setCategories(category);
        return fragment;
    }

    public void setCategories(Category[] category) {
        mCategory = category;
    }

并将其用作

    fragment = FrgAddItemInfo.newInstance(category);
    fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.addToBackStack(FrgAddItemInfo.class.getSimpleName());
    fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
    fragmentTransaction.add(R.id.container, fragment, FrgAddItemInfo.class.getSimpleName());

答案 1 :(得分:3)

您的对象类别必须实现Parcelable

https://developer.android.com/reference/android/os/Parcelable.html

但是,作为一种解决方法,您可以使用Google的Gson将您的类序列化为json String并以字符串形式发送。

https://github.com/google/gson

答案 2 :(得分:1)

如果Bundle#putParcelableArray();实现了parcelable

,您可以使用Category

或者你可以在另一种情况下使用某些序列化到byte[]String(例如使用JSON)。