0

複数のアクティビティを作成しないようにするために、必要なアクティビティからフラグメントの配列を渡すことができるこのコードを持つActivity2が 1 つあります。

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内にロジックを作成して、ユーザーの各アクティビティから処理するのは効率的ではありません。

ArrayList を Activity1 から Activity2 に渡すにはどうすればよいですか?

4

3 に答える 3

0

これはフラグメント オブジェクトのリストを渡す設計が不適切であり、オブジェクトの Parcelable クラスの配列しか渡すことができませんでした。

于 2018-11-13T18:12:12.180 に答える