Các Công Nghệ Chính Được Sử Dụng
- Thành phần điều hướng BottomNavigationView
- Bố cục tương đối RelativeLayout >Xử lý sự kiện lắng nghe cho BottomNavigationView
- Sử dụng Fragment để quản lý giao diện
Quy Trình Triển Khai
1. Tạo Layout activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_above="@id/bottomNav"
android:layout_height="match_parent"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNav"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
app:menu="@menu/bottom_menu"
android:layout_height="wrap_content"/>
</RelativeLayout>
Để tạo file menu điều hướng, tạo trong thư mục res/menu/bottom_menu.xml
2. Triển khai MainActivity.java
public class MainActivity extends AppCompatActivity {
private TrangChuFragment trangChuFragment;
private GioHangFragment gioHangFragment;
private DonHangFragment donHangFragment;
private CaNhanFragment caNhanFragment;
private BottomNavigationView bottomNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Khởi tạo điều khiển
bottomNavigationView = findViewById(R.id.bottomNav);
// Thiết lập sự kiện chọn mục
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_home:
hienThiFragment(0);
break;
case R.id.menu_cart:
hienThiFragment(1);
break;
case R.id.menu_orders:
hienThiFragment(2);
break;
case R.id.menu_profile:
hienThiFragment(3);
break;
}
return true;
}
});
// Mặc định hiển thị trang chủ
hienThiFragment(0);
}
private void hienThiFragment(int viTri) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
anTatCaFragment(fragmentTransaction);
switch (viTri) {
case 0:
if (trangChuFragment == null) {
trangChuFragment = new TrangChuFragment();
fragmentTransaction.add(R.id.mainContainer, trangChuFragment);
} else {
fragmentTransaction.show(trangChuFragment);
}
break;
case 1:
if (gioHangFragment == null) {
gioHangFragment = new GioHangFragment();
fragmentTransaction.add(R.id.mainContainer, gioHangFragment);
} else {
fragmentTransaction.show(gioHangFragment);
gioHangFragment.capNhatDuLieu();
}
break;
case 2:
if (donHangFragment == null) {
donHangFragment = new DonHangFragment();
fragmentTransaction.add(R.id.mainContainer, donHangFragment);
} else {
fragmentTransaction.show(donHangFragment);
donHangFragment.capNhatDuLieu();
}
break;
case 3:
if (caNhanFragment == null) {
caNhanFragment = new CaNhanFragment();
fragmentTransaction.add(R.id.mainContainer, caNhanFragment);
} else {
fragmentTransaction.show(caNhanFragment);
}
break;
}
// Luôn commit giao dịch
fragmentTransaction.commit();
}
private void anTatCaFragment(FragmentTransaction fragmentTransaction) {
if (trangChuFragment != null) {
fragmentTransaction.hide(trangChuFragment);
}
if (gioHangFragment != null) {
fragmentTransaction.hide(gioHangFragment);
}
if (donHangFragment != null) {
fragmentTransaction.hide(donHangFragment);
}
if (caNhanFragment != null) {
fragmentTransaction.hide(caNhanFragment);
}
}
}
Việc sử dụng Fragment trong MainActivity giúp quản lý hiệu quả các màn hình chuyển đổi trong ứng dụng, đặc biệt là với cấu trúc điều hướng như bottom navigation.