viewBinding & Fragment & FragmentContainerView example > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

Android | viewBinding & Fragment & FragmentContainerView example

본문

build.gragle

[code]

android {

    buildFeatures {

        viewBinding = true

    }

}

[/code]

 

ActivityMain.kt

[code]

package kr.kbay.example1


import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle

import kr.kbay.bogosa.databinding.ActivityMainBinding


class MainActivity : AppCompatActivity() {

    val TAG: String = "로그"

    lateinit var binding: ActivityMainBinding


    lateinit var firstFragment: FirstFragment

    lateinit var secondFragment: SecondFragment

    lateinit var thirdFragment: ThirdFragment


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)


        binding = ActivityMainBinding.inflate(layoutInflater)

        setContentView(binding.root)


        setSupportActionBar(binding.toolbar.root)


        binding.bottomNavigation.setOnNavigationItemSelectedListener {

            when(it.itemId) {

                R.id.firstFragment -> {

                    firstFragment = FirstFragment.newInstance()

                    supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, firstFragment).commit()

                }

                R.id.secondFragment -> {

                    secondFragment = SecondFragment.newInstance()

                    supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, secondFragment).commit()

                }

                R.id.thirdFragment -> {

                    thirdFragment = ThirdFragment.newInstance()

                    supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, thirdFragment).commit()

                }

            }

            true

        }

    }

}

[/code]

res.layout

activity_main.xml

[code]

<?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:layout_height="match_parent"

    tools:context=".MainActivity">


    <androidx.fragment.app.FragmentContainerView

        android:id="@+id/fragments_frame"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_below="@id/toolbar"

        android:layout_above="@id/bottom_navigation"

        />


    <com.google.android.material.bottomnavigation.BottomNavigationView

        android:id="@+id/bottom_navigation"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        app:itemBackground="@color/cardview_dark_background"

        app:itemTextColor="@drawable/selector"

        app:itemIconTint="@drawable/selector"

        app:menu="@menu/menu_navigation"

        android:layout_alignParentBottom="true"

        />


</RelativeLayout>

[/code]

 

res.navigation

bot_navi.xml

 

[code]

<?xml version="1.0" encoding="utf-8"?>

<navigation 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:id="@+id/bot_navi"

    app:startDestination="@id/firstFragment">


    <fragment

        android:id="@+id/firstFragment"

        android:name="kr.kbay.bogosa.FirstFragment"

        android:label="fragment_first"

        tools:layout="@layout/fragment_first"

        />

    <fragment

        android:id="@+id/secondFragment"

        android:name="kr.kbay.bogosa.SecondFragment"

        android:label="fragment_second"

        tools:layout="@layout/fragment_second" />

    <fragment

        android:id="@+id/thirdFragment"

        android:name="kr.kbay.bogosa.ThirdFragment"

        android:label="fragment_third"

        tools:layout="@layout/fragment_third" />

</navigation>

[/code]

 

res.layout

fragment_first.xml

[code]

<?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"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    tools:context=".FirstFragment"

    android:orientation="vertical"

    android:gravity="center">


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="First"

        android:textSize="50dp"

        />


</LinearLayout>

[/code]

 

res.layout

fragment_second.xml

생략

 

res.layout

fragment_third.xml

생략

 


댓글 0개

등록된 댓글이 없습니다.

Menu