Java fragmentTransaction.replace().commit()在创建父活动时调用

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

我有一个父活动,它存储了几个片段,在活动的onCreate中我启动了第一个片段

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();
}