เมื่อเปิดแอพจะสร้าง fragment
ขึ้นมาด้วยเลย 1 อัน
ถ้าจะสร้าง fragment
เพิ่มก็กดปุ่ม ADD FRAGMENT กด 1 ครั้งก็สร้าง fragment
ขึ้่นมา 1 อัน (fragment
ที่สร้างใหม่จะอยู่ด้านบน)
ถ้าจะลบ fragment
ก็กดปุ่ม CLOSE FRAGMENT กด 1 ครั้งก็ลบ fragment
ออกไป 1 อัน
หรือกด Back 1 ครั้งก็ลบ fragment
ออกไป 1 อัน

สร้าง Fragment ขึ้นมาใหม่ชื่อ HomeFragment
ไฟล์ที่เกี่ยวข้อง
- activity_main.xml
- MainActivity.java
- fragment_home.xml
- HomeFragment.java
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity" /> <Button android:id="@+id/btn_add_fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Fragment" /> <Button android:id="@+id/btn_remove_fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Close Fragment" /> </LinearLayout> <FrameLayout android:id="@+id/layout_fragment_container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#d9e1ea" /> </LinearLayout>
MainActivity.java
package com.phaisarn.myapplication; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private static final String TAG_HOME_FRAGMENT = "tag_home_fragment"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager() .beginTransaction() .replace(R.id.layout_fragment_container, HomeFragment.newInstance(), TAG_HOME_FRAGMENT) .addToBackStack(null) .commit(); } Button btnAddFragment = findViewById(R.id.btn_add_fragment); Button btnRemoveFragment = findViewById(R.id.btn_remove_fragment); btnAddFragment.setOnClickListener(onAddFragmentClickListener); btnRemoveFragment.setOnClickListener(onRemoveFragmentClickListener); } private View.OnClickListener onAddFragmentClickListener = new View.OnClickListener() { @Override public void onClick(View v) { // คำสั่งเพิ่ม Fragment ลงบน ViewGroup getSupportFragmentManager() .beginTransaction() .replace(R.id.layout_fragment_container, HomeFragment.newInstance(), TAG_HOME_FRAGMENT) .addToBackStack(null) .commit(); } }; private View.OnClickListener onRemoveFragmentClickListener = new View.OnClickListener() { @Override public void onClick(View v) { // คำสั่งลบ Fragment ที่อยู่บน ViewGroup Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_HOME_FRAGMENT); if (fragment != null) { getSupportFragmentManager().popBackStack(); } } }; }
fragment_home.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Home Fragment!" /> <Button android:id="@+id/btn_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Close" /> </LinearLayout>
HomeFragment.java
package com.phaisarn.myapplication; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; /** * A simple {@link Fragment} subclass. */ public class HomeFragment extends Fragment { public HomeFragment() { // Required empty public constructor } public static HomeFragment newInstance() { return new HomeFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_home, container, false); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Button btnClose = view.findViewById(R.id.btn_close); btnClose.setOnClickListener(onCloseClickListener); } private View.OnClickListener onCloseClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getFragmentManager().popBackStack(); } }; }