【发布时间】:2016-09-29 09:34:58
【问题描述】:
我有一个 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) 到 (int, com.test.restaurants.sliderfragments.RestaurantsFragment)"
【问题讨论】:
-
您的
RestaurantsFragment扩展Fragment是否正确? -
还要确保
RestaurantParcelableModel实现Parcelable。因为这种类型的铸造 -(ArrayList<? extends Parcelable>) restaurantList是安静的危险。 -
两个片段都使用 import
android.app.Fragment#?? -
在这种特殊情况下,您的片段必须扩展
android.app.Fragment而不是android.support.v4.app.Fragment; -
然后用
getSupportFragmentManager()代替getFragmentManager()
标签: java android android-fragments arraylist fragmenttransaction