java - 如何传递 ArrayList?
问题描述
为了避免创建多个活动,我有一个Activity2具有此代码,允许我从任何我想要的活动中传递一组片段。
privateArrayList<Fragment> fragArrayList;
fragArrayList = intent.getParcelableArrayListExtra("fragArrayList");
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(fragArrayList.get(i));
}
});
private void setFragment(Fragment fragment) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.layout, fragment)
.addToBackStack(null)
.commit();
}
在Activity1我有这个代码(我知道这不起作用)
Wrong 2nd argument type. Found: 'java.util.ArrayList<android.support.v4.app.Fragment>', required: 'java.util.ArrayList<? extends android.os.Parcelable>'
.
Intent intent= new Intent(Activity1.this, Activity2.class);
ArrayList<Fragment> fragArrayList = new ArrayList<>();
fragArrayList.add(new frag1());
fragArrayList.add(new frag2());
fragArrayList.add(new frag3());
fragArrayList.add(new frag4());
fragArrayList.add(new frag5());
intent.putParcelableArrayListExtra("fragArrayList"), fragArrayList);
关键是让 fragArrayList 从任何Activity 移动到Activity2。而且由于 fragArrayList 中的碎片会根据它们来自的活动而有所不同,因此我不能将它们添加到Activity2中的 ArrayList 中。
并且由于将有多个活动,因此在Activity2内部创建逻辑来处理用户来自的每个 Activity 的效率不高。
如何将 ArrayList 从 Activity1 传递到 Activity2?
解决方案
片段不是 Parcelable,因此您将无法通过意图传递它们。您可以通过意图传递完全限定的片段类名称,然后通过反射在 Activity2 中实例化片段。
推荐阅读
- r - 当两个数据帧的列和行不同时,left_join 和 rows_update 的 tidyverse 替代方案
- python - 如何在另一个文件中的文件中导入模块
- ios - 如何正确签署要通过 iOS 中的 dlopen 加载的 C++ dylib
- reactjs - Apollo 3:从缓存中删除嵌套项
- amazon-web-services - 公共子网中的角度和私有子网中的后端springboot不使用代理服务器(nginx / apache2)流量如何流动
- javascript - 使用可选参数运行 LIKE 查询 - SQLite3
- html - 文件类型输入的 Ionic 5 接受属性无法正常工作
- css - CSS 伪选择器用于选择可用于兄弟 (+) 或通用兄弟 (~) 选择器的 querySelector 中的当前元素?
- python - 我怎样才能把它们打印得更漂亮?
- deployment - npm 在 nextJS 和 vercel 部署中运行构建错误