好吧,考虑一个片段有两个子片段的情况,就像在主片段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中完成
答案 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();
}
}