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

리시버로 하위 액티비티에 값 전달

0 추천
안녕하세요 상위 액티비티 A에 리시버를 만들어서 action_time_tick으로

1분마다 변하는 것을 감지하고 있습니다.

A를 상속하는 B,C,D등등의 하위 액티비티마다 textView가 있는데요,

action을 캐치할 때마다 현재 페이지[b,c,d중 하나]에 출력하고싶습니다..

문제는 사용자가 이동을 하다보니 시간이 변할 때b,c,d중 현재 어느페이지에 있는지를

알 수가 없어서.. 어떤식으로 상위 리시버의 값을 받을 수 잇는지 궁금합니다..
ㅎㅎ 님이 2018년 1월 2일 질문

1개의 답변

0 추천
아마도 B,C,D는 '상속'관계가 아니고 Call stack(startActivity) 관계인 것처럼 보이네요.

A 액티비티의 리시버에서 다시 새로운 intent로 broadcast하고,

B, C, D 액티비티에서 다시 dynamic broadcast receiver으로 받아서 각각의 textView에 적용하면 됩니다.
디자이너정 (42,810 포인트) 님이 2018년 1월 2일 답변
답변 감사합니다. 말씀주신대로 b,c,d는 startactivity로 불러오는게 맞습니다.
맨 처음 시작할 땐 b페이지부터 뜨고 버튼으로 c,d등으로 이동합니다.
a액티비티는 bcd에서 사용하는 변수등을 관리하려고 부모액티비티로 사용중이구요 bcd는 extends aActivity 상태입니다. 현재 a에 receiver를 생성,실행하는 함수 하나 만들어둔 뒤 앱을 처음 시작할 때 b의 onCreate에서 해당 함수를 실행합니다.
intent로 브로드캐스트 한다는게 startActivity시 intent값으로 브로드캐스트 인텐트 필터 값을 넘기라는 것인가요?[이해를 잘 못해서 여쭤봅니다.실례된다면 죄송합니다..]
구조가 좀 이상하긴 하지만, a - (b,c,d) 상속 관계인가보네요.
그리고 a 액티비티가 event를 handling하는 것이 아니고 결국 b 액티비티가 하고 있네요.
이런 구조라면, b.onCreate()에서 event handling 하는 것을 c.onCreate(), d.onCreate()에서 똑같이 하면 되지 않을까요?
...