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