为了避免创建多个 Activity ,我有一个 Activity2,其中包含此代码,允许我从任何我想要的 Activity 中传递一组 fragment 。
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 内的 frag 会根据它们来自的 Activity 的不同而有所不同,因此我不能将它们添加到 Activity2 内的 ArrayList 中。
由于存在多个 Activity ,因此在 Activity2 内创建逻辑来处理用户来自的每个 Activity 的效率并不高。
如何将 ArrayList 从 Activity1 传递到 Activity2?
最佳答案
fragment 不可打包,因此您无法通过 Intent 传递它们。您可以通过 Intent 传递完全限定的 fragment 类名称,然后通过反射在 Activity2 中实例化 fragment 。
关于java - 如何传递ArrayList<Fragment>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53286995/