728x90
onCreateView 메서드에서 생성한 View 객체를 통해 내부의 View 주소 값을 얻어올 수 있다.
이 때 findViewById 메서드를 사용한다
Activity 에서 View에 접근 할 때는 findViewById 가 아닌 자동으로 생성된 변수를 통해 접근하였다.
Fragment 는 onCreateView 메서드에서 사용하면 오류가 발생하며 그 이후에 호출되는 메서드에서 처리해줘야 한다.
Fragment에서 Activity 접근하기
Activity 프로퍼티를 사용하면 Fragment를 소유하고 있는 Activity에 접근이 가능하다.
package com.example.fragmentview
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val frag = SubFragment()
val tran = supportFragmentManager.beginTransaction()
tran.replace(R.id.container1,frag)
tran.commit()
}
}
main_activity.xml

SubFragment
package com.example.fragmentview
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_sub.*
class SubFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_sub,null)
// val text1 = view.findViewById<TextView>(R.id.frag_text1)
// val btn1 = view.findViewById<Button>(R.id.frag_btn1)
//
// btn1.setOnClickListener {
// text1.text = "Fragment 문자열"
// }
return view
}
// Fragment가 관리하는 View 내부의 View 주소값들이 셋팅된 후
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
frag_btn1.setOnClickListener {
frag_text1.text = "Fragement 문자열열"
}
frag_btn2.setOnClickListener {
// MainActivity를 추출한다
val parent = activity as MainActivity
parent.activity_text1.text = "Acitivty 문자열"
}
}
}
fragment_sub.xml

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