본문 바로가기
AOS🤖/Java

[AOS-Java] onActivityResult 개념 및 사용법

by 텅빈비니 2024. 3. 5.
반응형

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️ 입니다.

 

오늘은 onActivityResult 에 대해 알아보도록 하겠습니다.


1. 개요

 

Activity  |  Android Developers

 

developer.android.com

onActivityResult 공식 홈페이지

예를 들어 Main, Test 두개의 Activity가 있습니다.
onActivityResult 란 Main 에서 Sub를 호출해서 넘어갔다가, 다시 Main 으로 돌아왔을 때 호출되는 메서드입니다.

 

바로 소스를 통해 알아보도록 하겠습니다.


2. 사용법

테스트 화면

  1. MainActivity 의 New Intent 버튼을 통해 TestActivity 를 호출합니다.
  2. TestActivity 의 finish 버튼을 클릭 시, 데이터를 담고 해당 Activity 를 종료시킵니다.
  3. TestActivity 에서 넘어온 데이터를 TextView 에 노출시킵니다.
// MainActivity

public class MainActivity extends AppCompatActivity {

    TextView tv;
    public static final int REQUEST_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.finishTestView);
    }

    public void onButtonClicked(View v) {
        Intent intent = new Intent(this, TestActivity.class);
        startActivityForResult(intent,REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE) {
            if (resultCode != Activity.RESULT_OK) {
                return;
            }

            String sendText = data.getExtras().getString("sendText");
            tv.setText(sendText);
        }
    }
}
  • startActivityForResult 메서드를 통해 REQUEST_CODE 를 담아 TestActivity 를 호출시킵니다.
  • TestActivity 에서 finish() 를 통해 다시 MainActivity 로 넘어오게 되면 onActivityResult() 메서드가 호출됩니다.
    • 넘겨 받은 데이터를 파싱하여 TextView에 넣어 노출시킵니다.
// TestActivity

public class TestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
    }

    public void onFinishButtonClicked(View v) {
        Intent intent = new Intent();
        intent.putExtra("sendText", "finish");
        setResult(RESULT_OK, intent);
        finish();
    }
}
  • 새로운 인탠트를 생성하고 putExtra 를 통해 데이터를 담습니다.
  • 그후 setResult() 를 통해 인탠트와 현재 상태를 표시한 후 finish() 를 통해 해당 Activity 를 종료시킵니다.
  • 그러면 MainActivity 의 onActivityResult() 가 호출되고 넘겨받은 데이터를 받을 수 있습니다.

감사합니다.


참고

반응형

'AOS🤖 > Java' 카테고리의 다른 글

[AOS-Java] onNewIntent 개념 및 사용법  (0) 2024.03.05