在Android Java中更改另一个片段中的片段

在Android Java中更改另一个片段中的片段,java,android,android-fragments,fragment,illegalstateexception,Java,Android,Android Fragments,Fragment,Illegalstateexception,我正在处理片段,在尝试从当前片段更改片段时遇到异常。 基本设计是: 具有框架布局的活动 最初放置在活动框架布局中的片段 片段A布局有一个框架布局,比如说框架A 最初加载到框架布局中的子片段 主要的设计思想是按下一个按钮Child_Fragment_a,在框架布局中加载Child_Fragment_B。 目前,在Child_Fragment_A中按钮的点击侦听器中,我使用以下代码实现此目的 if (v.getParent() != null) { FragmentTrans

我正在处理片段,在尝试从当前片段更改片段时遇到异常。 基本设计是:

  • 具有框架布局的活动
  • 最初放置在活动框架布局中的片段
  • 片段A布局有一个框架布局,比如说框架A
  • 最初加载到框架布局中的子片段
  • 主要的设计思想是按下一个按钮Child_Fragment_a,在框架布局中加载Child_Fragment_B。 目前,在Child_Fragment_A中按钮的点击侦听器中,我使用以下代码实现此目的

    if (v.getParent() != null) {
                FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.child_fragment, new searchResults());
                transaction.addToBackStack(null);
                transaction.commit();
                Log.d("mActivity", "loadfragment()");
            }
            else{
                ((ViewGroup)v.getParent()).removeView(v);
                FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.child_fragment, new searchResults());
                transaction.addToBackStack(null);
                transaction.commit();
                Log.d("mActivity", "loadfragment()");
            }
    
    此onClick()是在Child_Fragment_A的OnCreateView中实现的。但是,这会导致以下异常:

    例外情况

    D/AndroidRuntime: Shutting down VM
        
        
        --------- beginning of crash
    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.rehnsehan, PID: 2114
        java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
            at android.view.ViewGroup.addViewInner(ViewGroup.java:5235)
            at android.view.ViewGroup.addView(ViewGroup.java:5064)
            at android.view.ViewGroup.addView(ViewGroup.java:5004)
            at android.view.ViewGroup.addView(ViewGroup.java:4976)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:887)
            at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
            at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
            at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
            at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
            at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
            at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
            at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
            at android.os.Handler.handleCallback(Handler.java:938)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:223)
            at android.app.ActivityThread.main(ActivityThread.java:7656)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
    

    希望我能充分解释我的问题,请指出我遗漏了什么或做错了什么。谢谢。

    请包括整个堆栈trace@ianhanniballake在编辑中添加了它