[英]How to Pass ArrayList from Activity to Fragment in Android
我有一个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中的(int,android.app.Fragment)不能应用于(int,com .test.restaurants.sliderfragments.RestaurantsFragment) “
@Kemo我现在遇到的相同错误是我使用片段支持管理器而不是片段管理器。
FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
BlankFragment blankFragment = new BlankFragment();
fragmentTransaction.add(R.id.ll, blankFragment, "");
fragmentTransaction.commit();
这是因为您的类RestaurantParcelableModel没有实现Parceable类。 实现可分割的类并覆盖所需的方法。
请访问: http : //www.vogella.com/tutorials/AndroidParcelable/article.html
您可以使用Bundle
发送ArrayList:
Bundle args = new Bundle();
args.putStringArrayList("array", mArrayList);
restaurantsFragment.setArguments(args);
您必须删除以下行: import android.support.v4.app.Fragment;
并将其更改为import android.app.Fragment;
现在要解决此问题,您必须处理导入。
使用import android.app.Fragment
而不是import android.support.v4.app.Fragment
或使用支持片段管理器更新应用的主要内容,如下所示:
FragmentManager fragmentManager = getSupportFragmentManager().
但是然后,您还必须更改FragmentManager本身的类型。 import android.app.FragmentManager
以import android.support.v4.app.FragmentManager;
您可以使用parceable或serializabale传递arraylist或array list的对象。您可以从github的给定链接中找到parceable的示例。 ParceableSample.zip下载zip文件
您可以使用上面的链接示例来传递数组列表或数组列表的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.