반응형
Notice
Recent Posts
Recent Comments
Link
불로구
안드로이드 스튜디오 - Fragment<프레그먼트> ( 실습편1 ) 본문
반응형
- 프래그먼트 적용법
-> XML에 의한 ViewComponent 추가
-> 코드를 통한 동적으로 추가
- ViewComponent를 통한 추가방법
activity_main.xml
-> 들어갈 액티비티에 fragment 자리를 배치해준다.
-> TextView같은 리소스들은 id지정이 필수가 아니지면 fragment를 사용하기 위해선 id가 필수이다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World"
android:textSize="50dp" />
<!-- 아이디를 반드시 지정-->
<fragment
android:id="@+id/fragment_one"
android:name="com.example.aop_part2.fragment.fragment.FragmentOne"
android:layout_width="match_parent"
android:layout_height="300dp"/>
</LinearLayout>
fragment_one.xml
-> 프레그먼트를 생성한다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple_200">
</LinearLayout>
FragmentOne.kt
// View를 그리는 역할
// 프래그먼트가 인터페이스를 처음 그릴 때 호출
// inflater : 뷰를 그려주는 역할
// container : 부모 뷰
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
Log.d("life_Cycle" , "F onCreateView")
return inflater.inflate(R.layout.fragment_one, container,false)
// return super.onCreateView(inflater, container, savedInstanceState)
}
-> oneCreateView 메서드에서 inflater를 통해 리소스와 root, AttachRoot를 설정하고 반환한다.
-> activity_main.xml 에서 프래그먼트 영역에 id지정이 필수인 이유가 리소스를 지정해줘야 하기 때문이다.
- 동적으로 추가하는 방법
-> activity_main에서 버튼을 하나 만들고 버튼이 클릭되었을때 동작하는 방법이다.
-> 우선 프래그먼트를 동적으로 사용하기 위해서는 프래그먼트 매니저와 프래그먼트 트랜잭션이 필요하다.
-> 주의할점은 트랙재션의 단위는 시작과 끝을 나타내므로 beginTransaction()으로 시작만하면 적용이 되지 않는다.
-> 그러므로 commit()을 이용한 끝을 설정해주어야 프래그먼트가 적용한다
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
// 프래그먼트 동적으로 작동
val fragmentOne : FragmentOne = FragmentOne()
// 매니저 필요
val fragmentManager : FragmentManager = supportFragmentManager
//트랙잭션 생성 -> 작업의 단위 ( 시작과 끝 )
val fragmentTransaction = fragmentManager.beginTransaction() // 시작
fragmentTransaction.replace(R.id.container, fragmentOne) // 뷰아이디 자리에 fragment가 간다.
fragmentTransaction.commit() // 끝
// 끝을 내는 방법 3개
// commit -> 시간이 될 때
// commitnow -> 지금 당장
// commitAllowingStateLoss() -> 액티비티가 무언가를 복구할 때 실행이 안될 수 있음
}
}
반응형
'프로그래밍 > 코틀린 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 - Firebase를 이용한 푸시알람 (수정대기) (0) | 2021.04.18 |
---|---|
안드로이드 스튜디오 - Fragment에서 Activity로 데이터 전송 (0) | 2021.04.13 |
안드로이드 스튜디오 - Fragment<프레그먼트> ( 개념편 ) (0) | 2021.04.12 |
안드로이드(Kotlin) - LiveData (0) | 2021.04.06 |
안드로이드 스튜디오 - 다이어리 만들기 (0) | 2021.03.28 |
Comments