마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

activity와 fragment간 bundle로 데이터 전달이 궁금합니다

0 추천

현재 Main Activity에 A fragment에서 버튼을 클릭시 B activity로 이동하게되고 B activity에서 값이 선택되면 다시 A fragment로 돌아가 선택된 값과 같이 버튼 text가 바뀌게 하는 작업을 하고있습니다. 

        Log.e(" ", "코드 값은 $code")
                        if (placeNum == 3)
                        {
                            Log.e("지역(select)","${city}")
                            var bundle = Bundle()
                            bundle.putString("지역","${city}")
                            Log.e("bundle 값","${bundle.getString("지역")}")
                            StudyFindFragment().arguments = bundle
                            onBackPressed()
                        }

B activity의 코드입니다. Bundle에 값을 받아 StudyFindFragment(A fragment)로 넣는 작업을 했습니다. 여기서 드는 의문이 제가 다시 A fragment로 돌아가기위해서 onBackPressed()를 사용했는데요, 혹시 이거때문에 A fragment에 onCreate가 호출되지않아서 bundle값이 들어가지 않는것인지 궁금합니다. 이 이유라면 어떤식으로 해결을 해야할지 궁금합니다!

 private var region:String?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.e("create 접근","true")
        arguments?.apply{
            Log.e("지역","${this.getString("지역")}")
            region = this.getString("지역")
            binding.tvSelectRegion.text=region
        }
    }

이것은 받는쪽인 A fragment의 코드입니다. 

치킨피자 (150 포인트) 님이 2022년 8월 6일 질문

1개의 답변

0 추천
 
채택된 답변
아래 코드를 어떻게 이해하시는지요?
StudyFindFragment()

새로 프레그먼트를 생성하는 코드인가요, 아니면 기존에존재하는 프레그먼트를 가져오는 코드인가요?

그리고 프레먼트를 액티비티에 추가, 삭제, 검색할 때는 어떻게 해야 하나요?
원인을 아시려면 이 질문들에 답을 하실 수 있어야 하구요

액티비티에서 다른 액티비티로 부터 결과를 받을 때 어떻게 하나요?
이때 사용하는 동일한 함수를 프레그멈트에서도 사용하시던가 개발자 문서에서 Result API를 찾으셔서 그걸 사용하세요.
spark (224,800 포인트) 님이 2022년 8월 6일 답변
치킨피자님이 2022년 8월 8일 채택됨
감사합니다! Result API 문서 참조해서 해결했습니다.. 원인 분석을 위해 말씀해주신 질문들을 생각하니까 어떤것이 잘못되었는지 알게되었습니다
...