기본적으로 : 활동 A는 활동 B를 시작하는 startActivityForResult를 호출합니다.이 시점에서 활동 B는 활동 A의 onActivityResult 메소드를 다시 호출해야합니다. 대신, Activity B 은 Activity C의 onActivityResult 메소드를 다시 호출합니다. Activity B.getCallingActivity()는 예상대로 Activity A를 반환합니다. 보다 상세onActivityResult 잘못된 활동이 호출되고 있습니다.
:
EditModuleActivity (활동 A)
EditMotorActivity (활동 B)
ConfigurationActivity (활동 C :
I 세 활동이)
012 EditModuleActivity (활동 A)의 내부
3,516,,이 코드가 있습니다
private void doThisThing(Object item){
// blah blah build intent
DbgLog.error("calling activity: " + getCallingActivity().toString()); // this prints out Activity A, which is what I expect.
returnIntent.putExtra(EDIT_MOTOR_CONTROLLER, item);
setResult(RESULT_OK, returnIntent);
finish();
}
ConfigurationActivity (활동 C) : EditMotorActivity (활동 B)의 내부
private void launchIntentFromHere(){
int requestCode = 101;
Intent editMotorIntent = new Intent(context, EditMotorActivity.class);
editMotorIntent.putExtra(EditMotorActivity.EDIT_MOTOR_CONTROLLER, item);
editMotorIntent.putExtra("requestCode", requestCode);
setResult(RESULT_OK, editMotorIntent);
startActivityForResult(editMotorIntent, requestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
DbgLog.error("*************************** why is this never getting called?");
}
을,이 코드가 그것을 가지고있다 :
private void launchIntent(Object item){
Intent editMotorIntent = new Intent(context, EditMotorActivity.class);
editMotorIntent.putExtra(EditMotorActivity.EDIT_MOTOR_CONTROLLER, item);
setResult(RESULT_OK, editMotorIntent);
startActivityForResult(editMotorIntent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// deals properly with the results
}
내가 EditModuleActivity에있을 때 내가 EditMotorActivity를 시작하면 ConfigurationActivity.onActivityResult가이됩니다. 대신, 내가 EditModuleActivity에있을 때 EditMotorActivity를 시작하면 EditModuleActivity.onActivityResult가 호출되어야하지만 그럴 수 없습니다.
질문
왜 잘못된 onActivityResult를 호출지고 ??
올바른 onActivityResult를 어떻게 호출합니까? 내 기대가 잘못 되었습니까? 이게 어떻게 다른가?
잘못된 전화가 걸려 오면 올바른 전화를하는 방법은 무엇입니까?
답변 나는 내 코드는 여기 허용 대답과 동일
도움이되지 않았다 본 적이 : onActivityResult() not being called in activity
난에
android:launchMode="singleInstance"
이없는 내 매니페스트나는 "조각"이 무엇인지 모르지만 나는 그것이 있다고 생각하지 않습니다.
이 질문에서와 같이 하나의 활동에서 두 개의 다른 활동을 호출하지 않습니다. Handling onActivityResult in Android app having more than one activity 대신 두 개의 다른 활동에서 동일한 활동을 호출합니다.
여기에 "A 클래스에서 B 액티비티를 호출하면 항상 A 클래스로 코드가 반환됩니다. C에서 D를 호출하면 동일합니다." 하지만 B 액에서 B 액을 불러오고 C 액티비티로 돌아갑니다. 왜? 이처럼 WRONG onActivityResult() being called
:
B
/\
A C
하지 않음이 :
X Z
\/
Y
1) 다시 라벨을 붙이면 도움이됩니다. "A call B call C"주문의 활동 - "C call calls C"가 혼란스러운 것처럼 들리네. 2) "class A에서 Activity B로 전화하면"어떤 의미인지 명확히 할 수 있다면, "클래스 A"또는 "활동 A"입니까? - 활동이 아닌 활동에 대한 "클래스"호출이 이상하고 결과를 설명 할 수 있고 3) 실제 코드를 게시해야합니다. 정확한 표현이라고 생각 되더라도 어쩔 수없는 버그가 있습니다 ... 아마 관련없는 라인을 삭제할 수도 있지만 여전히 ... – Jim
응답 해 주셔서 감사합니다! 1. 나는 재명 표했다. B는 C를 호출하지 않으며 A는 B를 호출하고 C는 B를 호출하지만 B는 C를 호출하지 않습니다. 2. 명확화 - 다른 활동을 호출하는 모든 활동입니다. 삼.나는 원래 코드를 게시 할 수 없다 : (대부분은 누군가가 내게 무슨 일이 일어 났는지에 대한 나의 이해가 정확하다는 것을 확인할 수 있기를 바라고있다.) – nemicolopterus
컨텍스트를 초기화하는 방법 – Nepster