페이지

[Kotlin] 다른 Fragment와 통신, Fragment 사이 데이타 전달 오류

다른 Fragment와 통신

Fragment 사이의 데이타 전달 시 Viewmodel 를 사용하여 프로그램할 경우, 안드로이드 공식 문서에 따르면(참조: 다른 Fragment와 통신 ) 두 개 프레그먼트 간의 직접적인 데이타 전달은 지양된다.




두 Fragment 의   ViewModelProviders 액티비티 설정에 오류가 있었다.

Fragment1.kt 오류발생

 override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(myViewModel::class.java)

    }

일반적으로  ViewModelProviders.of(this) 사용으로 올바른 뷰모델의 사용이 되지 않아서 데이타 전달이 되지 못했다. 프래그멘트 안에서 사용할 경우,


ViewModelProviders.of(activity as MainActivity)

로 수정해야 했었다.

데이타를 업데이트 해야하는 Fragment2 에서는


Model.getText().observe(this, Observer<string> { t -> txtLanguage?.text("$t ,") })

가 아니라

Model.getText().observe(this, androidx.lifecycle.Observer<string> { t -> txtLanguage?.text("$t ,") })

로 수정해야 했었다.

Fragment2.kt

 override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        val Model = ViewModelProviders.of(activity as MainActivity).get(myViewModel::class.java)
        Model.getText().observe(this, androidx.lifecycle.Observer<string> { t -> txtLanguage?.text("$t ,") })

    }



댓글 없음:

댓글 쓰기

[Kotlin] 안드로이드 내부저장소 캐시에 저장하기

안드로이드 내부에 임시적으로 데이터를 저장하기 위해 캐시에 저장한다. 따로 퍼미션이 필요없고 보안이 필요없는 부분에서 잠시 저장할 때 유리하다 내부적으로 저장소가 부족할때 자동으로 지워질수 있다는 경고 private fun saveCache(d...