2014-10-28 3 views
2

세 가지 활동이 있습니다. A, B, C라고 가정 해 봅시다. 주요 활동은 A.Android 3 가지 활동, 세 번째 활동의 데이터를 상위 활동으로 전달

B에서 A를 시작한 다음 B에서 C를 시작한 다음 C가 열리면 B를 닫고 싶습니다. 마지막으로 C를 닫으면 데이터가 A로 전달됩니다.

특히 Intent 및 startActivityForResult를 사용하면 어떻게됩니까? 후자의 두 가지 방법 모두 가능합니까?

감사합니다. 당신이 활동 C를 시작하려면 버튼을 클릭하면

+0

C가 닫히기 전에 B가 닫히기 때문에 A가 액세스 할 수 있도록 C의 결과를 저장할 다른 장소가 필요하다고 생각합니다. 싱글 톤을 고려하거나이 데이터를 유지하기 위해 Application 객체를 재정의해야합니다. –

+0

활동 C에서 활동을 시작하고 모든 데이터를 의도로 설정할 수 있습니다. 귀하에게는 단일 활동으로 활동이 있습니다. 그런 다음 활동 A에 대한 새로운 의도 방법이 호출됩니다. 결과에 대한 활동을 설정할 필요가 없습니다. – jvrodrigues

답변

3

Supose 당신이 버튼을 사용하여, 당신은 활동 B를 완료하고, 활동 A.에서 활동 A.

사용하여 onActivityResult()의 동작을 얻을 수 있습니다 이 pont에서는 startActivityForResult()를 사용하여 활동 C를 시작할 수 있습니다.

이렇게하면 C를 마쳤 으면 onActivityResult()를 사용하여 데이터를 다시 A로 전달할 수 있습니다.

+0

이것은 트릭을 만들었습니다. 나는 결코 그것을 생각하지 못했다고 나는 믿을 수 없다. – user1319668

+0

다행히 도왔다! 제발, 대답으로 받아 들일 수 –

+0

그것은 수명주기 문제를 일으킬까요? – Gensoukyou1337

0

인 텐트를 사용하여 B에서 A와 C로부터 B를 시작할 수 있습니다. 스택에서 A를 제거하면 C는 startActivityforResult() 및 onActivityResult를 사용하여 A로 데이터를 직접 전달할 수 없습니다. (A가 메모리에 존재조차하지 않는 것은 명백하지 않습니다.) A가 C의 데이터에 액세스하려면 A가 다음에 실행될 때 액세스 할 수 있도록 C의 데이터를 어딘가에 저장해야합니다. 이제는 다른 시나리오에서이를 영구 또는 비 영구 데이터로 저장합니다. 당신은 데이터가 지속되고 싶은 경우에는 공유 환경 설정, 데이터베이스 등을 사용하는 것이 좋습니다 당신이 원하는 경우에 당신이 참조 싱글 등

를 사용할 수 있습니다 후 비 영구적으로 : http://developer.android.com/guide/faq/framework.html

1

르낭 로페스를 페레이라의 대답이 트릭을했다. 건배.