Android App Track⛺-027

MunkiJeon·2024년 7월 12일

TIL

목록 보기
44/59

TIL (Today I Learned)

오늘 공부한거!

  • BottomNavigationView
    1. app/build.gradle에서 뷰 바인딩을 사용하기 위해 viewBinding만 추가해 줍니다.
      android {
          ...
          buildFeatures {
              viewBinding true
          }
      }
    2. res/menu에 BottomNavigation에 사용할 메뉴를 생성
      //menu_bottom_nav.xml
      <?xml version="1.0" encoding="utf-8"?>
      <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/fragment_home"
            android:title="홈"
            android:icon="@drawable/ic_home"/>
        <item
            android:id="@+id/fragment_search"
            android:title="검색"
            android:icon="@drawable/ic_search"/>
        <item
            android:id="@+id/fragment_favorite"
            android:title="즐겨찾기"
            android:icon="@drawable/ic_favorite"/>
        <item
            android:id="@+id/fragment_settings"
            android:title="설정"
            android:icon="@drawable/ic_settings"/>
      </menu>
      3.MainActivity
class MainActivity : AppCompatActivity() {
    private val binding: ActivityMainBinding by lazy {
        ActivityMainBinding.inflate(layoutInflater)
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        setBottomNavigationView()

        // 앱 초기 실행 시 홈화면으로 설정
        if (savedInstanceState == null) {
            binding.bottomNavigationView.selectedItemId = R.id.fragment_home
        }
    }
    
    fun setBottomNavigationView() {
        binding.bottomNavigationView.setOnItemSelectedListener { item ->
            when (item.itemId) {
                R.id.fragment_home -> {
                    supportFragmentManager.beginTransaction().replace(R.id.main_container, HomeFragment()).commit()
                    true
                }
                R.id.fragment_search -> {
                    supportFragmentManager.beginTransaction().replace(R.id.main_container, SearchFragment()).commit()
                    true
                }
                R.id.fragment_favorite -> {
                    supportFragmentManager.beginTransaction().replace(R.id.main_container, FavoriteFragment()).commit()
                    true
                }
                R.id.fragment_settings -> {
                    supportFragmentManager.beginTransaction().replace(R.id.main_container, SettingsFragment()).commit()
                    true
                }
                else -> false
            }
        }
    }
}

Today Review

profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글