android - onActivityResult为什么不执行?
天蓬老师
天蓬老师 2017-04-17 17:29:24
0
4
500

Activity A:

int tag  = 0;
startActivityForResult(new Intent(getApplication(), LoreAddActivity.class).putExtra("tag1", tag), 100);

@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
    super.onActivityResult(arg0, arg1, arg2);
    if(arg1==RESULT_OK){
        switch (arg0) {
        case 100:
            tag2 = arg2.getIntExtra("tag2", 0);
            break;
        default:
            break;
        }
    }
}

Activity B:

int tag = getIntent().getIntExtra("tag1",0);

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt("tag2", tag);
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(4)
Peter_Zhu

의도에 오류가 있을 수 있습니다. 새로운 인텐트(XXX.this,LoreAddActivity.class)를 사용해 보세요.

getApplication()은 Application 개체를 참조하지만
Application 클래스는 Context 클래스를 확장하므로
애플리케이션 컨텍스트를 제공하는 데 사용할 수 있습니다.

getApplication이 반환한 애플리케이션 객체도 컨텍스트를 상속하므로 이렇게 사용할 수 있습니다. 그러나 소스가 명시적으로 지정되지 않으면 콜백, 즉 setResult를 수신할 때 B는 인텐트가 어디에서 왔는지 알 수 없습니다. 위 내용은 제가 이해한 내용이며 참고용일 뿐입니다. 오류가 있는 경우 지적해 주시기 바랍니다

巴扎黑

Activity A가 반환되는 한 onActivityResult가 실행됩니다. 로그 또는 디버그를 사용하여 onActivityResult가 실행되지 않은 위치를 확인할 수 있습니다

PHPzhong

두 활동에 어떤 시작 모드를 설정하셨나요?

黄舟

으아아아

이 문장은 getApplication을 사용합니다. Activity는 기본적으로 표준 모드에서 시작됩니다. 이 모드에서 시작된 Activity는 기본적으로 해당 Activity를 시작한 Activity의 작업 스택에 들어갑니다. 따라서 Activity를 시작할 때 getApplication을 사용하지 않고 이를 Activity의 Context로 바꾸는 것이 가장 좋습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿