首页 > 解决方案 > 如何传递 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?

标签: javaandroidandroid-fragmentsarraylist

解决方案


片段不是 Parcelable,因此您将无法通过意图传递它们。您可以通过意图传递完全限定的片段类名称,然后通过反射在 Activity2 中实例化片段。


推荐阅读