Android

안드로이드(Android) onBackPressed() 호출시(뒤로가기 버튼 클릭) onActivityResult() 데이터를 넘겨 받지 못 할때 해결방법

onActivityResult() 데이터를 넘겨 받지 못 할때 해결방법

주말 아침 부터 삽집을 하는 중이다. 내가 임의로 생성한 백버튼을 클릭하면 onActivityResult()에서 정상적으로 데이터를 넘겨받았다. 그러나 onBackPressed()를 오버라이드 한 곳에서만큼은 아무런 데이터도 넘겨 받지 못했다. setResult()메소드가 동작을 안하는 것이다!!! 왜 그런것일까? onBackPressed()를 오버라이드 한 곳의 코드를 살펴보다가 깜짝놀랬다. 방심하고 있었다. super.onBackPressed(); 코드가 먼저 호출 되면 그 아래 코드는 호출되지 않음을 말이다. 항상 느끼는 부분이지만 자주 사용하지 않으면 머리는 기억해 주지않는다. 삽집을 하고 나서야 비로소 떠오르는…. 나만 그런가……

■수정 전 코드

    @Override
    public void onBackPressed() {
        super.onBackPressed();

        if(resultCode > 0){
            Intent resutlIntet = new Intent();
            resutlIntet.putExtra("IS_UPDATE",true);
            setResult(Activity.RESULT_OK,resutlIntet);
        }else {
            setResult(RESULT_OK);
        }
        finish();
    }

■수정 후 코드

    @Override
    public void onBackPressed() {

        if(resultCode > 0){ 
            Intent resutlIntet = new Intent();
            resutlIntet.putExtra("IS_UPDATE",true);
            setResult(Activity.RESULT_OK,resutlIntet); 
        }else {
            setResult(RESULT_OK);
        }
        super.onBackPressed();
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 111 && data!=null){
            if (resultCode == RESULT_OK) {
                if (data.getBooleanExtra("IS_UPDATE", false))
                    callFragment(); 
            }
        }
    }

초심으로 다시 돌아가야하나……..

Leave a Reply

error: Content is protected !!