728x90
Controller
웹, 모바일 등 애플리케이션 개발 시 눈에 보이는 화면들을 관리하는 요소를 Controller 라고 부른다.
만약 눈에 보이는 모든 부분을 Fragment로 만들어 사용할 경우 Fragment를 관리하는 Activity가 Contoller의 역할을 한다.
Activity의 역할
각 Fragment를 교환하고 관리하는 역할을 한다.
Fragment들이 사용할 데이터를 관리하는 역할을 한다.
package com.example.activitycontroller
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
val inputFragment = InputFragment()
val resultFragment = ResultFragment()
// fragment들이 사용할 변수
var value1 = ""
var value2 = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setFragment("input")
}
fun setFragment(name: String) {
var tran = supportFragmentManager.beginTransaction()
when (name) {
"input" -> {
tran.replace(R.id.container1,inputFragment)
}
"result" -> {
tran.replace(R.id.container1,resultFragment)
tran.addToBackStack(null)
}
}
tran.commit()
}
}
main_activity.xml

InputFragment
package com.example.activitycontroller
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.fragment_input.*
class InputFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_input,null)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
input_button.setOnClickListener {
val mainActivity = activity as MainActivity
mainActivity.value1 = input_edit1.text.toString()
mainActivity.value2 = input_edit2.text.toString()
mainActivity.setFragment("result")
}
}
override fun onResume() {
super.onResume()
input_edit1.setText("")
input_edit2.setText("")
}
}
fragment_input.xml

ResultFragment
package com.example.activitycontroller
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.fragment_input.*
import kotlinx.android.synthetic.main.fragment_result.*
class ResultFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_result,null)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val mainActivity = activity as MainActivity
result_text1.text = mainActivity.value1
result_text2.text = mainActivity.value2
}
}
fragment_result.xml

728x90
'안드로이드 > Fragment' 카테고리의 다른 글
안드로이드 DialogFragment (0) | 2022.06.17 |
---|---|
안드로이드 ListFragment (0) | 2022.06.17 |
안드로이드 Fragment 내의 View 제어 (0) | 2022.06.17 |
안드로이드 Fragment 생명주기 (0) | 2022.06.17 |
안드로이드 Fragement (0) | 2022.06.17 |