728x90
반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️ 입니다.
오늘은 onActivityResult 에 대해 알아보도록 하겠습니다.
1. 개요
예를 들어 Main, Test 두개의 Activity가 있습니다.
onActivityResult 란 Main 에서 Sub를 호출해서 넘어갔다가, 다시 Main 으로 돌아왔을 때 호출되는 메서드입니다.
바로 소스를 통해 알아보도록 하겠습니다.
2. 사용법
- MainActivity 의 New Intent 버튼을 통해 TestActivity 를 호출합니다.
- TestActivity 의 finish 버튼을 클릭 시, 데이터를 담고 해당 Activity 를 종료시킵니다.
- 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() 가 호출되고 넘겨받은 데이터를 받을 수 있습니다.
감사합니다.
참고
728x90
반응형
'AOS 🤖 > Java' 카테고리의 다른 글
[AOS-Java] onNewIntent 개념 및 사용법 (0) | 2024.03.05 |
---|