Android

[Kotlin][Android] μ•ˆλ“œλ‘œμ΄λ“œ 13(SDK 33)이상 OnBackPressed() deprecated에 κ΄€ν•œμ—¬

λŽμš” 2022. 11. 2. 12:48

μ•ˆλ…•ν•˜μ„Έμš” πŸ‘‹

μ˜€λŠ˜μ€ μ•ˆλ“œλ‘œμ΄λ“œ 13(targetSDK 33) 이상 λ²„μ „μ—μ„œ onBackPressedκ°€ 

deprecatedλœκ±΄μ— λŒ€ν•΄ ν¬μŠ€νŒ…ν•΄λ³΄λ € ν•©λ‹ˆλ‹€!

 

ν¬μŠ€νŒ…μ„ ν•˜κ²Œ 된 κ³„κΈ°λŠ”

targetSDK 33으둜 μ„€μ •ν›„ μ½”λ”© 쀑..

 

μœ„ 사진과 같이 ideμ—μ„œ 계속 warning을 μž‘λŠ” 것을 λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

λ™μž‘μ€ μ •μƒμ μœΌλ‘œ ν•˜λŠ”λ° μ™œ deprecatedκ°€ 된 것인지 μ•Œμ•„λ³΄λ‹ˆ μ•„λž˜μ™€ 같은 μ΄μœ κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. πŸ€”

 

 μ•ˆλ“œλ‘œμ΄λ“œ 10λΆ€ν„° μ‹œμŠ€ν…œμ΄ 제슀처 탐색 κΈ°λŠ₯ (μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μŠ€μ™€μ΄ν”„ ν•΄μ„œ λ’€λ‘œ μ΄λ™ν•˜λŠ” 것과 같은 제슀처)을 μ œκ³΅ν•˜μ˜€λŠ”λ°μš” μ•±μ—μ„œ 이 제슀처λ₯Ό μŠ€μ™€μ΄ν”„μ™€ 결합됐을 λ•Œ 예기치 μ•Šμ€ λ™μž‘μ„ μ΄ˆλž˜ν–ˆλ‹€κ³  ν•©λ‹ˆλ‹€.
즉 , μ œμŠ€μ²˜κ°€ μ‹œμŠ€ν…œ λ’€λ‘œ λ˜λŠ” μ•± λ’€λ‘œ 탐색을 ν•œ 것인지 μ•ˆλ“œλ‘œμ΄λ“œ μ‹œμŠ€ν…œμ΄ ꡬ별할 수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

(앱이 제슀처λ₯Ό μ²˜λ¦¬ν•˜λŠ”μ§€ λ’€λ‘œ κ°€κΈ°λ₯Ό μ²˜λ¦¬ν•˜λŠ”μ§€λ₯Ό μ•Œ 수 μ—†λ‹€.)

 

그렇기에 ν˜„μž¬ onBackPressed() λŒ€μ‹  backPressedDispatcher에 callBack을 μΆ”κ°€ν•΄μ£Όμ–΄ λ™μž‘ν•˜λ„λ‘ ꢌμž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©λ°©λ²•μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

private lateinit var binding : AcitivtyMainBinding
override fun onCreate(savedInstance : Bundle?) {
	super.onCreate(savedInstance)
    binding = ActivityMainBinding.inflate(layoutInflater).also{
    	setContentView(it.root)
    }
     this.onBackPressedDispatcher.addCallback(this , MyBackPressedCallBack())
}


/* override fun onBackPressed() { κΈ°μ‘΄ μ‚¬μš©λ°©λ²•
	super.onBackPressed()
} */

inner class MyBackPressedCallBack() : OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            // backν‚€ μΈκ°€μ‹œ ν•  λ™μž‘ κ΅¬ν˜„
        }
    }

κΈˆμΌμ€ μ•Œμ•„λ‘λ©΄ 쒋을 것 같은 정보λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•˜μ—¬ ν¬μŠ€νŒ…ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€!!

 

μ˜€λŠ˜λ„ 즐코 ν•˜μ„Έμš” :)