UMC_안드로이드_2주차

Falco·2021년 12월 7일
0

한글파일로만 정리해 놨었는데 클났다 언제 다 옮기지

2주차 : 액티비티 전환 및 프래그먼트 전환

핵심 키워드 🎯

  • Activity
    • AppcompatActivity
    • startActivity (Activity 전환)
    • Intent
  • Fragment
    • Fragment 전환
  • Data Class
  • Binding
  • setOnClickListener
  • Log
  • Toast

* 바인딩이란?

FindViewById를 사용하던 과거와는 달리 채신기술
findviewByid에 비해 소스 간단, 및 Null 안정성:
개발자가 실수로 유효하지 않은 id를 사용하면 null 오류가 발생할 수 있다.

Gradle에 뷰바인딩 넣는거 잊지말기.

  • 액티비티에서 바인딩 넣기
    lateinit var binding: (Activity이름)Binding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = (Activity이름).inflate(layoutInflater)
        setContentView(binding.root)
        }
  • 프래그먼트에서 넣기
    lateinit var binding : (Fragment이름)Binding

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = (Fragment이름)Binding.inflate(inflater, container, false)

        return binding.root
    }

viewBinding 동작원리
viewBinding은 gradle에 설정하는 것 만으로 개발자가 작성한 레이아웃 파일들을 다음과 같은 공식으로 모두 바인딩클래스로 자동변환 해줍니다.

  • 자동변환공식 : 레이아웃파일명(첫 글자와 언더바 다음영문을 대문자로 변환) + Binding
    예)
    activity_main.xml = ActivityMainBinding
    activity_sub.xml = ActivitySubBinding

Manifest의 intent filter는 스타트액티비티를 하면 intent filter가 그 액티비티로 넘어가는느낌.

intent는 액티비티에서 사용하는 택배상자느낌

val intent = Intent(this, SongActivity::class.java)
intent.putExtra("title",song.title)

받을 때 따로 intent 변수선언을 안하는 듯?

if (intent.hasExtra("title") && intent.hasExtra("singer")) 
{
	binding.songTitleTv.text = intent.getStringExtra("title")
	binding.songSingerTv.text = intent.getStringExtra("singer")
}
  • data 클래스란?
    일반 클래스는 객체지향 프로그램 관점에서 객체를 정의하는 틀
    데이터 클래스도 마찬가지지만 데이터 클래스는 보통 데이터들만 담는 틀 일반클래스의 범주에 데이터 클래스도 들어가지만 데이터 클래스는 데이터들을 담는 틀이 되기에 특화된 클래스
class Song(
val title : String = "",
val singer : String = ""
)

객체 선언하듯이 똑같이 선언

○ Intent

  • 명시적 인텐트 : 특정 컴포넌트나 액티비티가 명확하게 실행되어야할 경우
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)

우리가 쓴 것

  • 암시적 인텐트 : 인텐트의 액션과 데이터를 지정, But 출할 대상이 달라질 수 있는 경우
    PDF뷰어가 여러개인데 하나를 선택해야할 때,
    인텐트 속성 : 액션, 리졸빙 + 카테고리
    https://codechacha.com/ko/android-explicit-implicit-intent/ 나중에참고

○ Log란

○ 토스트 메세지

AppcompatActivity가 뭘까?

○ Fragment 전환

메인 엑티비티 내에서의 fragment 전환
(context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm, AlbumFragment()).commitNowAllowingStateLoss()
profile
강단있는 개발자가 되기위하여

0개의 댓글