public class MainActivity extends AppCompatActivity {
TextView tv_result;
Button btn_move;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_result = (TextView) findViewById(R.id.tv_result);
btn_move = (Button) findViewById(R.id.btn_move);
btn_move.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
getSubActivitiyResult.launch(intent); //startActivityResult 랑 동일한 기능 수행
}
});
}
private final ActivityResultLauncher<Intent>getSubActivitiyResult = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
//서브 액티비티로부터 돌아올 때의 서브 액티비티에서 벌어지는 어떠한 결과 값을 받아 올 수 있는 통로
if(result.getResultCode() == RESULT_OK ){
// 서브 액티비티의 입력 값을 메인에서 받아서 텍스트뷰에 표시..
tv_result.setText(result.getData().getStringExtra("value"));
}
}
);
}
sub.activity
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
EditText et_input = (EditText) findViewById(R.id.et_input);
findViewById(R.id.btn_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String strInputValue = et_input.getText().toString();
//메인 액티비로 다시 돌아갈 때 입력필드의 입력 값을 되돌려 준다
Intent intent = new Intent();
intent.putExtra("value", strInputValue);
setResult(RESULT_OK, intent);
finish();
}
});
}
}