728x90
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_move"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintEnd_toEndOf="@+id/tv_result"
app:layout_constraintStart_toStartOf="@+id/tv_result"
app:layout_constraintTop_toBottomOf="@+id/tv_result" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_sub.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/e"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SubActivity">
<EditText
android:id="@+id/et_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text="Name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Button"
app:layout_constraintEnd_toEndOf="@+id/et_input"
app:layout_constraintStart_toStartOf="@+id/et_input"
app:layout_constraintTop_toBottomOf="@+id/et_input" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.registerforactivityresult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView tv_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_result = findViewById(R.id.tv_result);
findViewById(R.id.btn_move).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
getSubActivityResult.launch(intent); // startActivityForResult 랑 동일한 기능 수행..!
}
});
}
private final ActivityResultLauncher<Intent> getSubActivityResult = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
// 서브 액티비티로부터 돌아올 때의 서브 액티비티에서 벌어지는 어떠한 결과 값을 받아 올 수 있는 통로..!
if (result.getResultCode() == RESULT_OK) {
// 서브 액티비티의 입력 값을 메인에서 받아서 텍스트뷰에 표시...!
tv_result.setText(result.getData().getStringExtra("value")); //getStringExtra로 받아옴
}
}
);
}
만약 버튼 별로 여러가지 기능을 만들고 싶다면
private final ActivityResultLauncher<Intent> getSubActivityResult = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
// 서브 액티비티로부터 돌아올 때의 서브 액티비티에서 벌어지는 어떠한 결과 값을 받아 올 수 있는 통로..!
if (result.getResultCode() == RESULT_OK) {
// 서브 액티비티의 입력 값을 메인에서 받아서 텍스트뷰에 표시...!
tv_result.setText(result.getData().getStringExtra("value")); //getStringExtra로 받아옴
}
}
);
}
여기서 getSubActivityResult와 같은 변수 명을 목적에 맞게 이름을 설정한 후, 구현하면 된다.
SubActivity.java
package com.example.registerforactivityresult;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
EditText et_input = findViewById(R.id.et_input);
findViewById(R.id.btn_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strInputValue = et_input.getText().toString();
// 메인 액티비티로 다시 돌아갈 때 입력필드의 입력 값을 되돌려 준다..!
Intent intent = new Intent();
intent.putExtra("value",strInputValue);
setResult(RESULT_OK,intent);
finish(); // 이 부분에서 SubActivity가 종료되고, MainActivity로 돌아갑니다.
}
});
}
}
결과

728x90
'[Android Studio] (Java)' 카테고리의 다른 글
| [Android Studio] 파이어베이스 DB연동 리사이클러 뷰 (Firebase RecyclerView) (0) | 2023.09.04 |
|---|---|
| [Android Studio] Room Database (앱 내부 데이터베이스) (0) | 2023.09.03 |
| [Android studio] 생명 주기 (Life Cycle) (0) | 2023.09.03 |
| [Android Studio] View Binding (뷰 바인딩) (0) | 2023.09.03 |
| [Android Studio] Frame Layout (뷰 끼리 겹치기) (0) | 2023.09.03 |