Fragment 및 Activity (Intent) 기초
많은부분 생략하고, 기초부분만 기록한다.
1. Fragment
- 말 그대로 파편. 여러곳에서 갖다 쓸 수 있는 레이아웃 모듈이라 볼 수 있다.
- Activity 의 레이아웃 전부 혹은 일부에 올려놓을 수 있다.
1.1. Fragment 호출
- FragmentManager와 FragmentTransaction을 이용
- FragmentTransaction의 beginTransaction 호출
- Fragment의 클래스형 변수 생성
- transaction.add 혹은 replace를 이용해 fragment를 올린다.
- 1번 인자값 : Fragment를 올릴 뷰 아이디
- 2번 인자값 : fragment의 클래스 변수
- transaction.commit 또는 commitAllowingStateLoss 함수 호출
* transaction.addToBackStack(null) 을 하게되면, 뒤로가기 히스토리에 기록을 할 수 있다.
* Fragment가 호출될 경우, onCreateView 함수가 호출된다.
lateinit var fragManager : FragmentManager
lateinit var trans : FragmentTransaction
...
fragManager = supportFragmentManager
trans = fragManager.beginTransaction()
val fl2 = BlankFragment2()
trans.addToBackStack(null)
trans.replace(R.id.frameLayout3,fl2)
trans.commitAllowingStateLoss()
1.2. Fragment에서 activity 항목 접근
- activity?.findViewById 를 통해 activity 항목 접근
1.3. Activity에서 Fragment 접근
- onAttachFragment 함수를 이용하여 함수 접근 가능
fun onAttachFragment(fragment: Fragment) {
if (fragment is 프래그먼트 클래스명) {
fragment.함수명
}
}
2. Intent
- 서비스, 브로드캐스트 등 다방면으로 이용할 수 있으나, 다른 Activity를 호출하는 방법만 기록한다.
- Intent항목을 생성한다
- 1번 인자값 : 현재 콘텍스트로 this 전달
- 2번 인자값 : Activity의 클래스로, class.java를 붙여준다.
- 데이터값을 전달하고 싶을 경우 putExtra를 이용한다.
- 키, 밸류로 구성이 되어 있고, 문자열 말고도 다양한 형식에 대응된다.
- startActivity 함수를 호출한다.
var item : Intent = Intent(this,MainActivity2::class.java)
item.putExtra("11","111")
startActivity(item)
2.1. Activity에서 인자값 받아오기
- onCreate 에서, 수행한다.
- intent.getxxxx 를 호출하여 키값을 인자로 주면, 밸류값을 받을 수 있다.
- 형식에 맞는 함수를 호출해야 한다.
var it = intent.getStringExtra("11")