Android 无法将对象片段传递到片段

Android 无法将对象片段传递到片段,android,android-fragments,Android,Android Fragments,我试图传递一个对象片段->活动->片段 我的第二个片段说,当获取参数时,我的对象为空: 片段A:(发送对象,通信器是主活动的接口) 片段B:(片段包含在另一个片段中) 我用另一个片段替换一个片段,但将对象传递给另一个片段中的片段(meet_container_fragment)。因此,我的对象被直接发送到片段。我在另一个实例中实现了这一点,我实际上替换了片段,但我想替换片段容器,而不是实际的片段B MeetAthletesListContainer meetAthletesListConta

我试图传递一个对象片段->活动->片段

我的第二个片段说,当获取参数时,我的对象为空:

片段A:(发送对象,通信器是主活动的接口)

片段B:(片段包含在另一个片段中)

我用另一个片段替换一个片段,但将对象传递给另一个片段中的片段(meet_container_fragment)。因此,我的对象被直接发送到片段。我在另一个实例中实现了这一点,我实际上替换了片段,但我想替换片段容器,而不是实际的片段B

  MeetAthletesListContainer meetAthletesListContainer = new MeetAthletesListContainer();

        ***** Fragment is not replaced just called *******
        MeetAthletesMales meetAthletesMales = new MeetAthletesMales();
        MeetAthletesFemales meetAthletesFemales = new MeetAthletesFemales();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        Bundle bundle = new Bundle();
        bundle.putParcelable("meetAthletesMales", meet);
        bundle.putParcelable("meetAthletesFemales", meet);
        meetAthletesFemales.setArguments(bundle);

        ******* Replaces current fragment with container that contains above (2) fragments *******
        transaction.replace(R.id.frameLayout, meetAthletesListContainer, "meetAthletesListContainer");
        transaction.addToBackStack(null);
        transaction.commit();
试试这个

主要活动

     FragmentB fragmentb = FragmentB.newInstance(appContext,meet);
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     fragmentTransaction.add(R.id.contentContainer, fragmentb , tag);
片段B

    public static FragmentB newInstance(AppContext appContext, Meet meet) {
    FragmentB fragment = new FragmentB();
    Bundle args = new Bundle();
    args.putSerializable(ARG_APP_CONTEXT, appContext);
    args.putString(ARG_MEET_NAME, meet.name);
}


同时使Meet实现可序列化

transaction.replace将删除所有片段并添加新片段。也许使用transaction.add?我不认为您真的改变了这里的任何内容。我将尝试此方法,但想知道添加/替换不同的片段而不是片段B是否会对片段B获得捆绑包产生影响。在我的程序中,片段B包含在我将要替换的另一个片段中
  MeetAthletesListContainer meetAthletesListContainer = new MeetAthletesListContainer();

        ***** Fragment is not replaced just called *******
        MeetAthletesMales meetAthletesMales = new MeetAthletesMales();
        MeetAthletesFemales meetAthletesFemales = new MeetAthletesFemales();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        Bundle bundle = new Bundle();
        bundle.putParcelable("meetAthletesMales", meet);
        bundle.putParcelable("meetAthletesFemales", meet);
        meetAthletesFemales.setArguments(bundle);

        ******* Replaces current fragment with container that contains above (2) fragments *******
        transaction.replace(R.id.frameLayout, meetAthletesListContainer, "meetAthletesListContainer");
        transaction.addToBackStack(null);
        transaction.commit();
     FragmentB fragmentb = FragmentB.newInstance(appContext,meet);
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     fragmentTransaction.add(R.id.contentContainer, fragmentb , tag);
    public static FragmentB newInstance(AppContext appContext, Meet meet) {
    FragmentB fragment = new FragmentB();
    Bundle args = new Bundle();
    args.putSerializable(ARG_APP_CONTEXT, appContext);
    args.putString(ARG_MEET_NAME, meet.name);
@Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        appContext = (AppContext) getArguments().get(ARG_APP_CONTEXT);
        name= getArguments().getString(ARG_MEET_NAME);
         }
}