如何将ArrayList从Activity传递到Android中的Fragment

时间:2016-09-29 09:34:58

标签: java android android-fragments arraylist fragmenttransaction

我有一个MainActivity和一个片段。我想要做的是将数组列表从我的主要活动传递到我的片段。

在我的MainActivity中,我的代码如下所示:

private final List<RestaurantParcelableModel> restaurantList = new ArrayList<>();
...
RestaurantsFragment restaurantsFragment = new RestaurantsFragment();
        Bundle args = new Bundle();
        args.putParcelableArrayList("restaurantList", (ArrayList<? extends Parcelable>) restaurantList);
        restaurantsFragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.restaurants_list, restaurantsFragment);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();

现在我在fragmentTransaction.replace(R.id.restaurants_list, restaurantsFragment )中收到此错误; - “错误的第二个参数类型。找到:'com.test.restaurants.sliderfragments.RestaurantsFragment',必填:'android.app.Fragment' 无法应用FragmentTransaction中的replace(int,android.app.Fragment) to(int,com.test.restaurants.sliderfragments.RestaurantsFragment)

6 个答案:

答案 0 :(得分:2)

@Kemo我现在面临同样的错误我使用片段支持管理器而不是片段管理器。现在它工作正常。

$(input).val();

答案 1 :(得分:2)

这是因为您的类RestaurantParcelableModel未实现Parceable类。实现parceable类并覆盖所需的方法。

访问:http://www.vogella.com/tutorials/AndroidParcelable/article.html

答案 2 :(得分:1)

您可以使用Bundle发送您的ArrayList:

Bundle args = new Bundle();
args.putStringArrayList("array", mArrayList);
restaurantsFragment.setArguments(args);

答案 3 :(得分:1)

您必须删除行:import android.support.v4.app.Fragment; 并将其更改为import android.app.Fragment;

答案 4 :(得分:1)

现在解决您必须处理导入的问题。

使用"(?<!\\S)\\*(?!\\s)([^*]+)(?<!\\s)\\*(?!\\S)" 代替realpath()

或者使用支持片段管理器更新您应用的主要内容,如下所示:

import android.app.Fragment

但是你还必须改变FragmentManager本身的类型; import android.support.v4.app.FragmentFragmentManager fragmentManager = getSupportFragmentManager().

答案 5 :(得分:0)

您可以使用parceable或serializabale传递arraylist的对象 或者数组列表。你可以从github的givenlink找到parceable的例子。 ParceableSample.zip download the zip file

您可以使用上面的链接示例传递数组列表或数组列表对象。