我的布局中有一个带有 Button 和 FrameLayout 的 Activity。当我单击按钮时,我将片段添加到 Activity 的视图中。addToBackStack()
如果我在单击“后退”按钮时将片段添加到“后退”堆栈,它就会消失。我想通过再次单击按钮来实现相同的功能。
我的代码是这样的:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AddRemoveFragment Frag_A = new AddRemoveFragment();
FragmentManager fm1 = getSupportFragmentManager();
FragmentTransaction transaction = fm1.beginTransaction();
if ( state == 0 ) {
Log.i(TAG, "inside IF");
state=1;
transaction.add(R.id.fragment_container_1, Frag_A);
transaction.addToBackStack(null);
transaction.commit();
} else {
state=0;
Log.i(TAG, "inside ELSE");
//transaction.replace(R.id.fragment_container_1, Frag_A);
transaction.remove(Frag_A);
transaction.commit();
}
}
});
两者remove()
兼而有之hide()
。从参考资料中,我不了解更具体的内容。只是说它从容器中删除了片段。这不是我想要的吗?从FrameLayout中移除片段?
编辑:希望它与支持库无关。我看到有人对此有一些问题。这里
XML:
<?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/button_frag_1"
android:layout_width="124dp"
android:layout_height="wrap_content"
android:text="@string/button_text_1" />
<FrameLayout
android:id = "@+id/fragment_container_1"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button_frag_1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/button_frag_1" >
</FrameLayout>
编辑 2:我将else
语句中的代码从transaction.replace(R.id.fragment_container_1, Frag_A);
to更改为transaction.remove(Frag_A);
但仍然具有相同的功能。