Android

Fragment 및 Activity (Intent) 기초

Dean83 2022. 6. 8. 09:28

많은부분 생략하고, 기초부분만 기록한다. 

 

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")