SubActivity 값 주기
mainActivity.kt 값 추가
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("form1", "hello Bundle")
intent.putExtra("form2", 2020)
activity_sub.xml 값 출력 TextView 추가
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".SubActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="서브 액티비티"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/to1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="to1"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/to2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="to2"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
subActivity.kt 값 가져와서 TextView에 추가하기
to1.text = intent.getStringExtra("form1")
to2.text = "${intent.getIntExtra("form2", 0)}"
실행화면
MainActivity 값 전달하기
activity_sub.xml 소스 추가하기
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
<Button
android:id="@+id/btnClose"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="메인에 값 전달하기" />
SubActivity.kt 추가하기
btnClose.setOnClickListener {
val returnIntent = Intent()
returnIntent.putExtra("returnValue", editText.text.toString())
setResult(Activity.RESULT_OK, returnIntent)
finish()
}
값
|
설명
|
RESULT_OK
|
처리한 결과 값 성공
|
RESULT_CANCEL
|
처리한 결과 값 실패이거나 취소
|
MainActivity.kt 추가하기
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("form1", "hello Bundle")
intent.putExtra("form2", 2020)
btnSub.setOnClickListener {
startActivityForResult(intent,99)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == Activity.RESULT_OK) {
val message = data?.getStringExtra("returnValue")
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}
}
-
기존에 startActivity() 메서드로 SubActivity를 실행하면 값이 안 온다.
-
startActivity() 함수 말고, startActivityForResult() 함수로 SubActivity 화면을 호출한다.
-
startActivityForResult() 메소드는 SubActivity를 호출한 곳으로 값을 넘겨주는 함수다.
실행화면
댓글 영역