본문 바로가기
728x90

안드로이드/Fragment12

Fragment 생성자 조건 Fragment 생성시 newInstance() 사용하는 이유 1. 프래그먼트 재성성(화면 회전과 같은)시 빈 생성자가 있어야 한다 2. 재생성시 받아온 데이터를 유지하기 위해서 사용한다. 자주사용하는코드 companion object { private const val ARG_PARAM1 = "param1" private const val ARG_PARAM2 = "param2" @JvmStatic fun newInstance(param1: String, param2: String) = MainFragment().apply { arguments = Bundle().apply { putString(ARG_PARAM1, param1) putString(ARG_PARAM2, param2) } } } newIn.. 2022. 11. 1.
fragment간 데이터 전송 build.gradle 추가 // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" setFragmentResult로 데이터 전송 firstFragmentBinding.secondBtn.setOnClickListener { setFragmentResult("requestKey", bundleOf("data" to "hello")) mainViewModel.data = "hello" findNavController().navigate(R.id.action_firstFragment_to_secondFragment) } setFragmentResultListener로 데이터 수신 setFragmentResultListener("r.. 2022. 10. 3.
안드로이드 fragment에서 부모 fragment 접근 getParentFragment() 사용하시면 부모 fragment 얻을 수 있다. 2022. 8. 4.
안드로이드 DialogFragment dialogfragment 생성하면 넓이랑 높이가 wrap_content로 생성되는데 크기를 조절할려면 onResume에 추가로 설정해야한다 override fun onResume() { super.onResume() // dialog 넓이 80% 설정 // 높이 50% 설정 val params = dialog?.window?.attributes params?.width = resources.displayMetrics.widthPixels * 8 /10 params?.height = resources.displayMetrics.heightPixels * 5 /10 dialog?.window?.attributes = params as WindowManager.LayoutParams } package com.. 2022. 8. 3.
안드로이드 Activity Animation Activity도 Fragment 처럼 애니메이션을 정의할 수 있다. Activity는 Fragment와 달리 기본 애니메이션이 설정되어 있으므로 기본을 사용해도 된다. 주의할 점은 나타나는 Activity, 사라지는 Activity 모두 설정 해야한다. 애니메이션 설정은 overridePendingTransition 메서드를 사용한다. package com.example.activityanimation2 import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainAc.. 2022. 6. 17.
안드로이드 Fragment Animation 새로운 Fragment 를 표시할 때 애니메이션을 설정할 수 있다. 애니메이션은 미리 정의 되어 있는 것이 있고 직접 구성할 수도 있다. 주의할 점은 애니메이션 설정은 프래그먼트를 교체하기 전에 해야 한다. 기본 애니메이션은 관계가 없지만 애니케이션을 커스터마이징 할 경우 프래그먼트 교체 후 설정하면 애니메이션이 적용되지 않는다. 기본 애니메이션 setTransition : 애니메이션을 설정하는 메서드이다. 새로운 Fragment로 교체할 때 설정하며 돌아올 때도 애니메이션이 나타난다. TRANSIT_FRAGMENT_FADE, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE 3 가지를 제공하고 있으며 안드로이드 버전에 따라 모두 같은 애니메이션이 나타날 수도 있다. 애니.. 2022. 6. 17.
안드로이드 DialogFragment AlertDialog를 Fragment로 만들어 사용할 수 있도록 제공되는 Fragment이다 AlertDialog와 큰 차이는 없다. DialogFragment도 Fragment 이므로 Fragment의 생명주기나 기타 다양한 기능들을 그대로 사용할 수 있다. package com.example.dialogfragment import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bund.. 2022. 6. 17.
안드로이드 ListFragment Fragment 내에 ListView를 사용할 경우 보다 편리하게 구성할 수 있도록 제공되는 Fragment 이다. ListView의 id가 @android:id/list로 설정되어 있을 경우 자동으로 ListView를 찾아 관리하게 된다. package com.example.listfragment import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.ac.. 2022. 6. 17.
안드로이드 Activity Controller 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 inputFrag.. 2022. 6. 17.
안드로이드 Fragment 내의 View 제어 onCreateView 메서드에서 생성한 View 객체를 통해 내부의 View 주소 값을 얻어올 수 있다. 이 때 findViewById 메서드를 사용한다 Activity 에서 View에 접근 할 때는 findViewById 가 아닌 자동으로 생성된 변수를 통해 접근하였다. Fragment 는 onCreateView 메서드에서 사용하면 오류가 발생하며 그 이후에 호출되는 메서드에서 처리해줘야 한다. Fragment에서 Activity 접근하기 Activity 프로퍼티를 사용하면 Fragment를 소유하고 있는 Activity에 접근이 가능하다. package com.example.fragmentview import androidx.appcompat.app.AppCompatActivity import an.. 2022. 6. 17.
안드로이드 Fragment 생명주기 Fragment 도 생명 주기를 가지고 있다. 각 생명 주기에 자동으로 호출되는 메서드가 제공되며 이 메서드를 통해 필요한 처리를 할 수 있다. package com.example.fragmentlifecycle import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layo.. 2022. 6. 17.
안드로이드 Fragement 여러 화면을 가지고 있는 애플리케이션은 여러 Activity를 가지고 있는 애플리케이션을 의미한다. Activity는 독립된 실행단위로 메모리를 많이 소모하는데 독립된 실행단위가 아닌 화면만 필요한 경우 Activity 보다는 Fragment를 활용하는 것이 효율적이다. Fragment는 Activity내의 작은 화면 조각으로 Activity의 화면을 여러 영역으로 나누어 관리하고 하는 목적으로 사용한다. 주로 사용 함수 add : Fragment를 지정된 레이아웃에 추가한다. replace : 지정된 레이아웃에 설정되어 있는 Fragment를 제거하고 새로운 Fragment를 추가한다. AddToBackStack 안드로이드에서 back button은 현재 Activity를 종료한다. Fragment는 .. 2022. 6. 17.
728x90