티스토리 뷰
728x90
1. Activity 화면전환 시 데이터 전달
// activity_main.xml
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Main Activity"
android:textSize="24sp"
android:padding="10dp"
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_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Activity 전환"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/textview" />
// activity_sub.xml
<TextView
android:id="@+id/subview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Activity"
android:textSize="24sp"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:hint="전달 받은 데이터1"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@+id/subview"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="전달 받은 데이터2"
android:gravity="center"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv1" />
// MainActivity.kt
class MainActivity : AppCompatActivity() {
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.btnGo.setOnClickListener {
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("data1", "Sub 전달 데이타1")
intent.putExtra("data2", "Sub 전달 데이타2")
startActivity(intent)
}
}
}
// SubActivity.kt
class SubActivity : AppCompatActivity() {
val binding by lazy { ActivitySubBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.tv1.text = intent.getStringExtra("data1")
binding.tv2.text = intent.getStringExtra("data2")
}
}
728x90
2. Activity 간 양방향 데이터 전달
// activity_sub.xml
<TextView
android:id="@+id/subview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Activity"
android:textSize="24sp"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="23sp"
android:hint="보낼 메세지를 입력해 주세요."
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/message"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="메인전송" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="23sp"
android:hint="전달 받은 데이타1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv2"
app:layout_constraintTop_toBottomOf="@+id/btn_send" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="23sp"
android:hint="전달 받은 데이타2"
app:layout_constraintTop_toBottomOf="@+id/btn_send"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintRight_toRightOf="parent" />
// MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater).also {
setContentView(it.root)
}
val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult ->
if (result.resultCode == RESULT_OK) {
Toast.makeText(this, "수신 메세지 : "+ result.data?.getStringExtra("message"), Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this, "메세지 수신 실패!!", Toast.LENGTH_SHORT).show()
}
}
binding.btnGo.setOnClickListener {
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("data1", "Sub 전달 데이타1")
intent.putExtra("data2", "Sub 전달 데이타2")
startForResult.launch(intent)
}
}
}
// SubActivity.kt
class SubActivity : AppCompatActivity() {
private lateinit var binding: ActivitySubBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySubBinding.inflate(layoutInflater).also {
setContentView(it.root)
}
binding.tv1.text = intent.getStringExtra("data1")
binding.tv2.text = intent.getStringExtra("data2")
binding.btnSend.setOnClickListener {
var message = binding.message.text.toString().trim()
if (message.isEmpty()) {
Toast.makeText(this, "메세지를 입력해 주세요.", Toast.LENGTH_SHORT).show()
binding.message.requestFocus()
} else {
intent.putExtra("message", binding.message.text.toString())
setResult(RESULT_OK, intent)
finish()
}
}
}
}
728x90
'프로그램개발' 카테고리의 다른 글
[ kotlin ] when, while, do~while 문 (0) | 2024.10.11 |
---|---|
[ kotlin ] for 문 정리 (0) | 2024.10.08 |
[안드로이드] Intent 애플리케이션 실행 (0) | 2024.10.07 |
[ Kotlin ] setOnClickListener 메소드 사용법 6가지 (0) | 2024.09.13 |
[ Linux ] tar 명령 실행시 Error 원인 및 해결방법 (0) | 2024.09.09 |