2012-06-15 3 views
0

My app는 ListView가 포함 된 Activity A에서 시작됩니다. 사용자가 "추가"버튼을 클릭하여 활동 B로 이동하면 ListView에 항목이 추가 될 수 있습니다.안드로이드에서 Activity를 닫거나 끝내는 적절한 방법

활동 B에서는 일부 양식을 작성하고 "확인"버튼을 누르면 활동 A로 돌아갑니다 항목이 ListView에 추가됩니다.

B에서 A로 이동 한 후 finish() 메소드가 있지만 그 반대가 아닙니다.

그래서 세 개의 항목을 추가 한 후 세 번 뒤로 물러서면. ListView (Activity A)를 3 번 ​​반복합니다 - 추가 된 항목이 하나 더 적습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 당신이 B 액티비티에 있다면, 내가 원하지 않는 A로 돌아가는 대신 앱을 닫을 것이기 때문에, "Add"버튼 (A에서 B로가는)에 finish 메소드를 넣을 수는 없다. 즉, 사용자가 마음을 바꾸고 B에서 "OK"를 눌러 "새 항목 추가"를 원하지 않으면 수동 뒤로 버튼 만 대답입니까?

답변

3

startActivityForResult()을 사용하여 활동 B를 시작하고 양식을 작성한 후 활동 B를 마칩니다.

편집

당신 startActivityForResult(), 당신은이 개 매개 변수, 즉 intentrequestcode을 통과. 새로운 활동 (귀하의 경우 활동 B)을 완료 한 후에는 setResult(RESULT_OK) 기능을 사용하여 활동 B의 작업이 성공적 이었음을 나타내고 finish()으로 전화하십시오. finish()로 전화하면 활동 B는 활동 A로 돌아가 onActivityResult(int requestCode, int resultCode, Intent data)으로 전화 할 것입니다. 매개 변수 requestcode은 반환 된 특정 활동/요청을 식별하는 데 도움이됩니다.

희망이 설명은 도움이됩니다.

+0

감사합니다. "startActivityForResult (intent, int)"의 두 번째 값에서 int를 사용하려면 어떻게해야합니까? – KickingLettuce

+0

@KickingLettuce'startActivityForResult (intent, int)'에 대한 설명으로 내 대답을 편집했습니다. –

+0

startActivityForResult의 두 번째 매개 변수는 요청 식별자입니다. 이것이 호출 될 때 onActivityResult로 전달되므로 어떤 활동이 여러 활동에서 결과를 얻을 수있는 상황에서 결과를 전달하는지 알 수 있습니다. 귀하의 경우, 단지 1을 사용하여 한 위치에서 startActivityForResult를 호출하면 충분합니다. – Xono

관련 문제