• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

2강 질문이씁니다.

23.03.05 07:18 작성 23.03.05 07:21 수정 조회수 205

0

1.Fragment에서 ViewModel 사용 에서 7분 19초에 FragmentTestBinding이 import가 안되었을 때 xml 에서 layout을 추가하시던데요. 무슨관계가 있나요?

xml에서 FragmentTestBinding이름을 가진 name도 없는데요.

FragmentTestBinding가 클래스 이름 아닌가요?

 

 

2. Activity에서 ViewModel 사용 질문이요.

화면 전환이 이루어지게 되면 Activity가 파괴(onDestroy)된 다음 다시 화면이 만들어지기 때문에(onCreate -> onresume) 기존의 데이터가 날아가는 것이다.라고 이해해도 되나요?

 

3. 동일하게 프래그먼트도 화면 전환이 이루어지게 되면 Activity가 파괴(onDestroy)된 다음 다시 화면이 만들어지기 때문에(onCreate -> onresume) 기존의 데이터가 날아가는 것이다.라고 이해해도 되나요?

 

4. Activity / Fragment 의 ViewModel 공유 5분34초에서요.

DataBinding.setContentView(this,R.layout.activity_main) 변수를 2개 줬는데요

인터넷에 찾아보니 아래와 같이 나오는데요.

1. void setContentView(int layoutResID)

2. void setContentView(View view)

3. void setContentView(View view, ViewGroup.LayoutParams params)

1. layout resource 를 인자로 받습니다. 이후 LayoutInflater 를 통해 inflate 되어지고 이후 최상단 뷰에 add 될 것 입니다.

2. view 를 인자로 받습니다. 특정 view 로 content 를 구성 하고 싶을 경우 사용 될 것입니다.

한가지 주의사항으로는 인자로 사용 될 view 의 width, height 를 별도로 지정하여 사용하고자 하여도, 함수 내부적으로 기본 LayoutParam 상의 width, height 를 MATH_PARENT 로 설정 하기 때문에 항상 MATH_PARENT 로 content view 가 설정 된다는 점입니다. 특정 크기로 지정하고 싶다면 별도의 LayoutParam 을 구성하여 3. 메소드를 사용해야 합니다.

3. view 와 LayoutParam 을 인자로 받습니다. 2번에서 언급한 바와 같이 별도의 LayoutParam 으로 content view 를 구성하고 싶을 때 사용 되어 집니다.

[출처] https://blog.naver.com/pistolcaffe/221285539895

위설명에서 3번처럼 사용했다고 이해하면 되나요?

추가적으로 인터넷에 찾아보니

이어서 변수에 저장된 바인딩의 root 뷰를 setContentView에 전달한다.

setContentView(변수.root) 이부분은 위 설명에서 2번처럼 사용한걸로 이해해도 되나요?

 

4. Activity / Fragment 의 ViewModel 공유 에서 addBackStack(null) 이나와서 인터넷에 찾아봣는데요.https://todaycode.tistory.com/131 글 읽어보니.addBackStack이 스택에 쌓아놓고 pause하는데요. .

 

supportFragmentManager.beginTransaction()

.replace(R.id.frame_layout_main, MainFragment())

.addBackStack(null) // replace 다음에 적어준다.

.commit()

 

예시코드 위를 보면 replace는 데이터를 버리는데 데이터를 버리고 난 후에 addBackStack(null) 을 쓰는게 뭔 효과가 있나요? 윗 코드가 잘못된건가요?

 

답변 1

답변을 작성해보세요.

0

안녕하세요 :)

수업을 열심히 듣고 계시군요

  1. 자동으로 생성되는 viewbinding / databinding 클래스입니다. Activity / Fragment 이름에 따라 자동으로 생성됩니다.

  1. 네 그렇게 이해하셔도 무관할 것 같습니다.

  1. Fragment와 Activity에서 viewmodel 사용은 일부 다릅니다.

    Section2 - Activity에서 ViewModel 사용 / Fragment에서 ViewModel 사용을 참고해주세요~

4.1 구글에서 권장하는 방법을 사용했습니다.

https://developer.android.com/codelabs/android-databinding#4