쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • livedata
  • 코드업100제
  • 코틀린코테
  • 변수
  • 자바
  • 프로젝트회고
  • mvvm
  • Room
  • workmanager
  • Kotlin
  • Android
  • 기초100제
  • compose
  • 컴포즈
  • Adapter
  • AAC
  • DataBinding
  • ViewModel
  • 코딩테스트
  • 자료구조
  • 객체지향
  • 메소드
  • 백준
  • 코테
  • 코틀린
  • 상속
  • 리사이클러뷰
  • Jetpack
  • 배열

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[Android] Fragment과 Toast message
Android/Basic

[Android] Fragment과 Toast message

2022. 4. 15. 23:59

Fragment

UI 구성을 모듈 단위로 나누어 독립성을 추가해주고, 한 화면에 있던 UI 들을 조각이라는 단위로 재배치 하는 것

오늘 해볼 실습은 하나의 Activity안에서 Fragment가 어떻게 변환되는지를 파악하는 것이다.

위 그림과 같이 홈프래그먼트에서 앨범프래그먼트로 이동하는 것을 구현해보자.

먼저 프래그먼트 클래스를 만들어보면 액티비티클래스하고 다음과 같은 차이점이 있다.

class HomeFragment : Fragment() 

액티비티는 AppCompatActivity 를 상속받았지만

프래그먼트는 Fragment 를 상속받는다.

Binding을 선언해주는 것에도 차이가 있다.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater) //바인딩 초기화
    setContentView(binding.root)

먼저 액티비티에서는 위와 같이 선언해주지만

lateinit var binding: FragmentHomeBinding

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    binding = FragmentHomeBinding.inflate(inflater, container, false)
    //as mainActivity 홈프래그먼트는 메인엑티비티 안에있는 하나의 조각
    return binding.root
}

프래그먼트에서는 위와 같이 선언해준다. 

먼저 binding : xml뷰의 카멜케이스 로 선언해주는 것은 같지만

프래그먼트는 binding을 초기화 해줄 때 inflate(inflater, container, false)를 하고,

setContentView(binding.root)대신에 binding.root를 반환해준다.

 

바인딩을 초기화 하는 방법을 알아봤으니 이제 프래그먼트 이동을 살펴보자.

홈프래그먼트에서 앨범을 클릭하였을 때 앨범프래그먼트로 이동하는 코드이다.

binding.homeAlbumImgIv1.setOnClickListener {
    (context as MainActivity).supportFragmentManager.beginTransaction()
        .replace(R.id.main_frm , AlbumFragment()) //메인프레임부분을 앨범프래그먼트로 바꾸겠다.
        .commitAllowingStateLoss() //내부적으로 동작하는 부분
}

앨범이미지를 클릭했을 때 실행되는 함수이다.

모든 프래그먼트는 MainActivity에서 실행되고 MainFrame안에서 계속 바뀌는 형태라 as MainActivity를 적어주고

.replace(어디에 속해있는지, 어디로이동할지) 를 적어주었다.

우리는 메인프레임안에 있는 홈프래그먼트를 앨범프래그먼트로 전환해줄 것이기에

main_frm, AlbumFragment를 적어주었다.

 

반대로 앨범프래그먼트에서도 마찬가지로 다음과 같이 적어주어 뒤로가기 버튼을 클릭했을 때 홈프래그먼트로 전환해주었다.

binding.albumBackIv.setOnClickListener {
    (context as MainActivity).supportFragmentManager.beginTransaction()
            .replace(R.id.main_frm, HomeFragment())
            .commitAllowingStateLoss()
}

 

 

Toast Message

토스트메세지는 팝업창과 비슷하게 사용자에게 보여주는 메세지이다.

binding.songLalacLayout.setOnClickListener {
    Toast.makeText(activity, "LILAC", Toast.LENGTH_SHORT).show()
}

 

Toast Message

이렇게 라일락이라는 곡을 클릭하였을 때 LILAC이라는 토스트메세지를 나타낼 수 있다.

저작자표시 (새창열림)

'Android > Basic' 카테고리의 다른 글

[Android] BottomNavigation  (0) 2022.04.17
[Android] Data class와 Activity 데이터 전송  (0) 2022.04.16
[Android] Redeclaration Error  (0) 2022.04.14
[Android] Activity전환과 ViewBinding  (0) 2022.04.13
[Android] ConstraintLayout, Chain 설정  (0) 2022.04.12
    'Android/Basic' 카테고리의 다른 글
    • [Android] BottomNavigation
    • [Android] Data class와 Activity 데이터 전송
    • [Android] Redeclaration Error
    • [Android] Activity전환과 ViewBinding
    쏭식
    쏭식

    티스토리툴바