나는이 Location
같은 많은 활동에서 호출 할 수있는 활동 Sign up
과 Order
. 에서 Location
활동이 있도록 활동 사용자는 자신의 위치를 입력 Location
라고 불렀다 그 활동이 새로운 위치를 반환합니다.
따라서 Sign up
활동 이 활동을 호출 할 때 활동 Location
에 데이터를 반환해야합니다 Sign up
. 다른 시간에는 Order
활동이 동일한 작업을 수행합니다.
노트
나는 당신이 코드를 게시해야한다고 말할 것이라는 것을 압니다. 그러나 나는 당신에게 코드를 요청하는 것이 아닙니다. 나는 단지 몇 가지 팁, 링크 또는 좋은 스레드를 원합니다.
답변
호출 활동에 결과를 반환해야하는 활동을 시작하려면 다음과 같이해야합니다. 시작한 활동에서 결과를 얻었음을 식별하려면 아래와 같이 요청 코드를 전달해야합니다.
startActivityForResult(new Intent(“YourFullyQualifiedClassName”),requestCode);
활동에서 setData()
결과를 반환하는 데 사용할 수 있습니다.
Intent data = new Intent();
String text = "Result to be returned...."
//---set the data to pass back---
data.setData(Uri.parse(text));
setResult(RESULT_OK, data);
//---close the activity---
finish();
그런 다음 다시 첫 번째 활동에서 onActivityResult ()에 아래 코드를 작성합니다.
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == request_Code) {
if (resultCode == RESULT_OK) {
String returnedResult = data.getData().toString();
// OR
// String returnedResult = data.getDataString();
}
}
}
귀하의 의견에 따라 편집 :
세 개의 문자열을 반환하려면 Uri를 사용하는 대신 인 텐트로 키 / 값 쌍을 사용하여이를 따르십시오.
Intent data = new Intent();
data.putExtra("streetkey","streetname");
data.putExtra("citykey","cityname");
data.putExtra("homekey","homename");
setResult(RESULT_OK,data);
finish();
아래와 같이 onActivityResult 에서 가져 옵니다 .
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == request_Code) {
if (resultCode == RESULT_OK) {
String street = data.getStringExtra("streetkey");
String city = data.getStringExtra("citykey");
String home = data.getStringExtra("homekey");
}
}
}
답변
완료하고 resultCode
(데이터없이) 추가하고 싶다면 setResult(int resultCode)
전에 호출 할 수 있습니다 finish()
.
예를 들면 :
...
if (everything_OK) {
setResult(Activity.RESULT_OK); // OK! (use whatever code you want)
finish();
}
else {
setResult(Activity.RESULT_CANCELED); // some error ...
finish();
}
...
그런 다음 호출 활동에서, 확인하여 resultCode
괜찮은지 확인하십시오.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == someCustomRequestCode) {
if (resultCode == Activity.RESULT_OK) {
// OK!
}
else if (resultCode = Activity.RESULT_CANCELED) {
// something went wrong :-(
}
}
}
로 활동을 호출하는 것을 잊지 마십시오 startActivityForResult(intent, someCustomRequestCode)
.