Java fragmentTransaction.replace().commit()在创建父活动时调用
我有一个父活动,它存储了几个片段,在活动的onCreate中我启动了第一个片段Java fragmentTransaction.replace().commit()在创建父活动时调用,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,我有一个父活动,它存储了几个片段,在活动的onCreate中我启动了第一个片段 FatherFragment fatherFragment = new FatherFragment (); RegisterActivity.this.getSupportFragmentManager (). BeginTransaction ().add (R.id.fragmentContainer, parentFragment, "RegisterParentFragment").co
FatherFragment fatherFragment = new FatherFragment ();
RegisterActivity.this.getSupportFragmentManager (). BeginTransaction ().add (R.id.fragmentContainer, parentFragment, "RegisterParentFragment").commit ();
在应用程序中,片段显示正确,但此片段有一个按钮,用于调用另一个片段来替换它
MapsFragment mapsFragment = new MapsFragment();
Bundle bundle = new Bundle();
bundle.putString("idPersona", idPersona);
mapsFragment.setArguments (bundle);
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainer, mapsFragment, "mapaFragment")
.commit();
问题在于,在更改片段时(如果更改完成),父活动的onCreate方法将再次启动,并向我显示刚刚更改的片段的第一个片段
我必须假设视图再次运行,但我想知道是否有人可以帮助我找到解决此问题的方法
我补充说,这是片段之间的一系列步骤,每次切换时,相同的问题再次出现
问候并感谢您抽出时间。对不起,英语不好
添加onClick方法
btnSgtPadre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
guardarPersona(objPersona);
MapsFragment mapsFragment = new MapsFragment();
Bundle bundle = new Bundle();
bundle.putString("idPersona", idPersona);
mapsFragment.setArguments(bundle);
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainer, mapsFragment,"mapaFragment")
.commit();
}
});
请尝试以下代码:
在Activity create方法中,将添加以下片段:
public void switchToSecondFragment(Object idPersona){
MapsFragment mapsFragment = new MapsFragment();
Bundle bundle = new Bundle();
bundle.putString("idPersona", idPersona);
mapsFragment.setArguments(bundle);
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainer, mapsFragment,"mapaFragment")
.commit();
}
这样称呼它:
btnSgtPadre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
guardarPersona(objPersona);
((<YourActivityName>) getActivity()).switchToSecondFragment(idPersona);
}
});
你能分享你的点击方法的代码吗?@NehaK添加了方法。我想应用程序会因为这个方法而崩溃。如果应用程序崩溃,整个应用程序会重新启动。尝试查看日志是否有任何“致命”消息debug/log/run中没有致命消息guardarPersona中有什么?是的,它可以工作。加油!。在我的例子中,有3或4个片段,所以我必须将片段发送到activity方法。我又遇到了同样的问题。。。你能帮我吗?我是一名学生,我有我的第一份工作:(对不起,英语不好,你遇到了什么问题?
try{
MapsFragment mapsFragment = new MapsFragment();
Bundle bundle = new Bundle();
bundle.putString("idPersona", idPersona);
mapsFragment.setArguments(bundle);
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainer, mapsFragment,"mapaFragment")
.commit();
}catch(Exception e){
e.printStackTrace();
}