レイアウトに Button と FrameLayout を持つ 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);
ましtransaction.remove(Frag_A);
たが、それでも同じ機能が得られます。