【问题标题】:How to put the ArrayList into bundle如何将 ArrayList 放入包中
【发布时间】:2017-07-15 03:07:49
【问题描述】:

我已经像这样在 arraylist 中添加了一些值:

    private List<InfoProduct> product;

    product = new ArrayList<>();
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "0", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "1", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "2", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "3", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "4", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "5", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "6", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "7", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.cloth, Product_title, "8", Product_data2, lunch,R.drawable.cardview_circle_corner));
    product.add(new InfoProduct(R.drawable.guitar, Product_title, "9", Product_data2, lunch,R.drawable.cardview_circle_corner));

当我需要去其他 Fragment 时,我想使用 Bundle 来传输我的 ArrayList ,所以我写了一些代码来遵守这个

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_youtube, new FragmentYoutubeProduct(), "youtube");
    ft.addToBackStack("youtube");
    Bundle bundle = new Bundle();
    bundle.putStringArrayList("Product",product);
    ft.commit();

bundle.putStringArrayList("Product",product); 出现错误,我该如何解决这个问题?

【问题讨论】:

标签: java android arraylist


【解决方案1】:

首先,使InfoProduct Parcelable 检查这个Link

然后使用

bundle.putParcelableArrayList(product)

您可以通过

获得ArrayList
getParcelableArrayList(...)

【讨论】:

    【解决方案2】:

    您需要使用bundle.putParcelableArrayList() 并将您的列表实例化为私有ArrayList&lt;InfoProduct&gt; product;。同时确保InfoProduct 是Parcelable。

    【讨论】:

      【解决方案3】:

      您可以通过实现serializableparcelable 来传递自定义定义对象的数组列表。

      Android: Difference between Parcelable and Serializable?

      【讨论】:

        【解决方案4】:

        你的代码

        bundle.putStringArrayList("Product",product);
        

        正在尝试将字符串数组列表放入包中。但是,您没有字符串的数组列表。你有一个InfoProduct的数组列表

        因此,您需要将您的数组列表放入捆绑包中。为此,您需要使用the method putParcelableArrayList

        bundle.putParcelableArrayList("Product", product);
        

        为了做到这一点,您还需要确保您的对象InfoProduct 是可被Android 序列化的。所以你需要让它实现Parcelable interface

        This post 也可以帮助您。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-10
          • 2014-11-25
          • 2013-01-12
          • 2018-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多