728x90
Fragment 도 생명 주기를 가지고 있다.
각 생명 주기에 자동으로 호출되는 메서드가 제공되며 이 메서드를 통해 필요한 처리를 할 수 있다.

package com.example.fragmentlifecycle
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val frag = SubFragment()
button.setOnClickListener {
val tran = supportFragmentManager.beginTransaction()
tran.replace(R.id.container1,frag)
// backstack에 넣어주면 fragment 제거시 onStop까지만 실행, 소멸되지 않음
tran.addToBackStack(null)
tran.commit()
}
button2.setOnClickListener {
val tran = supportFragmentManager.beginTransaction()
tran.remove(frag)
tran.commit()
}
}
}
Fragment
package com.example.fragmentlifecycle
import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class SubFragment : Fragment() {
// fragment가 Activity와 연결이 되면 호출
override fun onAttach(context: Context) {
super.onAttach(context)
Log.d("test","onAttach")
}
// fragment가 생성될 때
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("test","onCreate")
}
// fragment를 통해 보여줄 View를 생성하기 위해 호출
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
Log.d("test","onCreateView")
val view = inflater.inflate(R.layout.fragment_sub,null)
return view
}
//fragment를 통해 보여줄 View가 생성되면 호출
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Log.d("test","onViewCreated")
}
// 액티비에서 보여줄 프래그먼트가 완전히 생성되면 호출된다.
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
Log.d("test","onActivityCreate")
}
// fragment가 가동될 때 호출(fragment가 화면에 표시될 때)
override fun onStart() {
super.onStart()
Log.d("test","onStart")
}
// fragment가 보여지고 나서 호출된다
override fun onResume() {
super.onResume()
Log.d("test","onResume")
}
//fragment가 일시 정지될때 호출(fragment가 화면세서 사라질 때)
override fun onPause() {
super.onPause()
Log.d("test","onPause")
}
// fragment가 화면에서 완전히 사라져서 더 이상 보여지지 않을 때 호출
// fragment 정지
override fun onStop() {
super.onStop()
Log.d("test","onStop")
}
// fragment가 제거될 떄 호출된다
override fun onDestroy() {
super.onDestroy()
Log.d("test","onDestroy")
}
// fragment가 액티비와 연결이 완전히 끊기기 전에 호출된다.
override fun onDetach() {
super.onDetach()
Log.d("test","onDetach")
}
}
728x90
'안드로이드 > Fragment' 카테고리의 다른 글
안드로이드 DialogFragment (0) | 2022.06.17 |
---|---|
안드로이드 ListFragment (0) | 2022.06.17 |
안드로이드 Activity Controller (0) | 2022.06.17 |
안드로이드 Fragment 내의 View 제어 (0) | 2022.06.17 |
안드로이드 Fragement (0) | 2022.06.17 |