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

[코틀린] 안드로이드 값 넘기고 받는것에 대해 질문입니다

0 추천
회원가입을 통해 정보값을 전달 후 최동페이지에서 확인 후 서버에 보낼려고 합니다.

액티비티는 총 4개가 있습니다.
A 액티비티
B 액티비티
C 액티비티
D 액티비티(최종확인 용도)

여기서 화면 전환 순서는 차례대로 갑니다

A -> B -> C -> D(최종확인)

A,B,C에서는 값을 각 받은 후 D로 값을 넘길려고 하는데
ex: A에서 값 입력후 D전달, B액티비티 실행
B에서 값 입력후 D전달, C액티비티 실행
C에서 값 입력후 D전달, D액티비티 실행

Intent 생성하고 Putextra, getExtra로 하면 null이 옵니다.

혹시 뭐가 문제이고 어떤식으로 처리할수있는지 알수있을까요?
kiop (160 포인트) 님이 2021년 6월 28일 질문
값이 넘기는 쪽이 잘못 전달하고 있던가 아니면 읽는 쪽의 문제이겠네요.
값을 넘기는 쪽과 읽는 쪽에서 디버깅을 해보시면 Intent에 안에 저장되었는 값을 확인하실 수가 있기 때문에 뭐가 문제인지 금방 찾으실 수 있을 겁니다.

2개의 답변

0 추천
전달하지 말고 static 변수로 만들어서 저장해버리셈

A에서 값입력후 static변수로 저장 B엑티비티실행

B에서 값입력후 static변수로 저장 C엑티비티실행

....

D엑티비티에서 static 변수 서버로 전달
show7777 (1,170 포인트) 님이 2021년 6월 28일 답변
아 변수를 만들어서 변수를 전달하라는 이야기인가요?
0 추천
액티비티 프레그먼트 간에 값을 전달할 때는 반드시 Serializable이나 Parcelable을 구현하여 bundle 에 담아서 전달되어야 합니다. 주된이유는 라이프 사이클 때문인데요, 안드로이드 시스템은 앱이 백그라운드에 있을 때 메모리 상황에 따라 앱을 쥭알 수 있고, 이게 실제 사용자의 폰에서는 생각보다 빈번하게 발생합니다. 이 상태에서 task manager에서 앱을 열거나 하면 앱이 재시작 될겁니다. 물론 열려있던 액티비티가다시 생성됩니다. 사용자의 입장에서는 좀 이상한 현상이 되기 때문에 가능하다면 뷰의 상태를 복구해주어야 합니다.

다른 예로, 디바이스를 회전시키거나 설정에서 폰트사이즈를 조절하거나 할 때, configuration change라는 것이 발생하여 현재 실행 중인 액티비티를 다시 생성하게 됩니다. onCreate부터 라이프 사이클이 다시 타게 됩니다. 그래서 액티비티의 onCreate 콜백 안에 인자가 savedInstance: Bundle로 되어 있는 겁니다. 여기에 액티비티의 상태가 저장되어 넘어오게 됩니다.  onStop을 보시면 뷰의 상태를 저장할 수 있도록 되어 있습니다. 여기서 저장한 데이터는 onCreate 의  Bundle 에서 꺼내어 쓸 수 있습니다.

결론적으로 말씀드리면 액티비티 간에 데이터를 넘길 때는 intent 안에 넣어서, 프레그먼트 간에는 argument에 넣어서 전달해야 합니다.
spark (230,130 포인트) 님이 2021년 6월 28일 답변
...