销毁层次关系中的碎片

时间:2015-01-09 04:32:33

标签: java android android-fragments

好吧,考虑一个片段有两个子片段的情况,就像在主片段xml中声明两个片段时,你如何破坏片段?将所有三个片段都添加到后栈吗?

考虑主要片段A并考虑其类文件..

 public class fragmentA extends Fragment {
public static FragmentC fragmentC;
private static View view;

@Override
public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    // TODO Auto-generated method stub
    if(view!=null){
          ViewGroup parent = (ViewGroup) view.getParent();
            if (parent != null)
                parent.removeView(view);
    }
    try{
        view = inflater.inflate(R.layout.fragment_a, container,
                false);

        fragmentC= (fragmentC) getActivity()
                .getSupportFragmentManager().findFragmentById(
                        R.id.fragment_c);
    }catch(InflateException e){
        e.printStackTrace();
    }
return view;

}

现在考虑片段a的xml文件fragment_a

  <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <fragment
                    android:id="@+id/FragmentB"
                     android:name="com.example.FragmentB"
                    android:layout_width="320dp"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    tools:layout="@layout/fragment_b" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <fragment
                    android:id="@+id/FragmentC"
                    android:name="com.example.FragmentC"
                    android:layout_width="300dp"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:layout_marginBottom="5dp"
                    android:layout_marginTop="5dp"
                    android:visibility="visible"
                    tools:layout="@layout/fragment_c" />
            </LinearLayout>

在上面的场景中,如何破坏片段?我们是否必须单独销毁所有三个碎片,或者我们是否必须销毁碎片a,其余部分会自行消灭?所有工作都在片段B中完成

1 个答案:

答案 0 :(得分:1)

答案很简单..

当你从页面移动时,你所要做的就是销毁每个碎片 检查以下代码 将此代码添加到两个页面.. pdmf是ur类的静态引用(片段A或片段C) 当你从片段B移动

时,为这两个片段调用这段代码
 public static void removeFragment() {
    try {
        FragmentTransaction ft = ((FragmentActivity) activityContext).getSupportFragmentManager()
                .beginTransaction();
        ft.remove((Fragment)pdMF);

        ft.commit();
    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}