목록lateinit (3)
안드로이드 개발자의 창고

UninitializedPropertyAccessException: lateinit property binding has not been initialized lateinit을 사용했지만 초기화하지 않아 발생하는 오류이다. 내 코드 class AllFragment : Fragment() { lateinit var binding: FragmentAllBinding override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // 사용할 레이아웃, 인수(부모), 프레그먼트 자동으로 추가할 것 인지 var binding = FragmentAllBinding.inflat..

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 지연 초기화란? Kotlin은 프로퍼티를 선언할 때 값을 무조건 설정해야 하는데 이를 지연 시키는 것을 지연 초기화라고 한다. lateinit var 로 선언된 변수의 초기화를 뒤로 미룰 수 있다. 변수의 값을 사용하기 전에 반드시 초기화가 이루어져야 한다. val 로 선언된 변수는 오류가 발생한다. lateinit은 기본 자료형(Int, Double 등)에서는 사용할 수 없다. lazy val로 선언된 변수는 setter()가 생성되지 않기 때문에 lateinit으로 지연 초기화 하는 것이 불가능하다. val로 선언된 변수는 lazy 코드 블록을 이용하면 되는데 이는 나중에 프로퍼티의 값을 셋팅해준다는 의미가 아닌 사용할 때 값을 초기화 한..

Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable. 노란색 밑줄이라서 심각한 오류는 아니고 변수명 변경 같은 권고사항인줄 알고 넘겼는데 오류가 났다. 오류를 자세히 보니 저 라인을 가리키고 있었다. 메뉴 버튼을 클릭하면 왼쪽에서 메뉴가 나오게끔 하기 위해 DrawerLayout를 사용했다. 하고나서보니 onCreate()의 setOnClickListener에서도 불러오고 onNavigationItemSelected()에서도 불러와야 했다. 난 그저 xml에 있는 DrawerLayout의..