IT박스

Android : 활동을 호출하는 활동에 결과를 반환하는 방법은 무엇입니까?

itboxs 2020. 8. 7. 08:10
반응형

Android : 활동을 호출하는 활동에 결과를 반환하는 방법은 무엇입니까?


나는이 Location같은 많은 활동에서 호출 할 수있는 활동 Sign upOrder. 에서 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(1); // OK!
    finish();
}
else {
   setResult(-1); // some error ...
   finish();
}
...

Then in your calling activity, check the resultCode, to see if we're OK.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == someCustomRequestCode) {
        if (resultCode == 1) {
            // OK!
        }
        else if (resultCode = -1) {
            // something went wrong :-(
        }
    }
}

Don't forget to call the activity with startActivityForResult(intent, someCustomRequestCode).

참고URL : https://stackoverflow.com/questions/14785806/android-how-to-make-an-activity-return-results-to-the-activity-which-calls-it

반응형