Skip to content

Commit efd9e10

Browse files
committed
Feat: MainActivity <-> SongActivity 간 전환 기능 구현
1 parent aa4fc7b commit efd9e10

File tree

5 files changed

+62
-4
lines changed

5 files changed

+62
-4
lines changed

Heather/FLOClone/app/src/main/java/com/example/floclone/AlbumFragment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
55
import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
8+
import android.widget.Toast
89
import com.example.floclone.databinding.FragmentAlbumBinding
910

1011
class AlbumFragment : Fragment() {
@@ -23,6 +24,9 @@ class AlbumFragment : Fragment() {
2324
.replace(R.id.main_frm, HomeFragment()).commitAllowingStateLoss()
2425
}
2526

27+
binding.songLalacLayout.setOnClickListener {
28+
Toast.makeText(activity, "LILAC", Toast.LENGTH_SHORT).show()
29+
}
2630

2731
return binding.root
2832
}

Heather/FLOClone/app/src/main/java/com/example/floclone/MainActivity.kt

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,49 @@ package com.example.floclone
22

33
import android.content.Intent
44
import android.os.Bundle
5+
import android.util.Log
6+
import android.widget.Toast
7+
import androidx.activity.result.contract.ActivityResultContracts
58
import androidx.appcompat.app.AppCompatActivity
69
import com.example.floclone.databinding.ActivityMainBinding
710

811
class MainActivity : AppCompatActivity() {
912

1013
lateinit var binding: ActivityMainBinding
1114

15+
// ActivityResultLauncher 설정
16+
private val songActivityLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
17+
if (result.resultCode == RESULT_OK) {
18+
val songTitle = result.data?.getStringExtra("songTitle")
19+
// 노래 제목을 Toast 메시지로 출력
20+
songTitle?.let {
21+
Toast.makeText(this, "$it", Toast.LENGTH_SHORT).show()
22+
}
23+
}
24+
}
25+
26+
1227
override fun onCreate(savedInstanceState: Bundle?) {
1328
super.onCreate(savedInstanceState)
1429
binding = ActivityMainBinding.inflate(layoutInflater)
1530
setContentView(binding.root)
1631

32+
val song = Song(binding.mainMiniplayerTitleTv.text.toString(), binding.mainMiniplayerSingerTv.text.toString())
33+
1734
binding.mainPlayerCl.setOnClickListener {
18-
startActivity(Intent(this, SongActivity::class.java))
35+
//startActivity(Intent(this, SongActivity::class.java))
36+
37+
// 미니플레이어 클릭 시 SongActivity로 이동하면서 노래 제목과 가수 이름 전달
38+
val intent = Intent(this, SongActivity::class.java)
39+
intent.putExtra("title", song.title)
40+
intent.putExtra("singer", song.singer)
41+
songActivityLauncher.launch(intent) // ActivityResultLauncher를 통해 SongActivity 실행
1942
}
2043

2144
initBottomNavigation()
2245

46+
Log.d("Song", song.title + song.singer)
47+
2348
}
2449

2550
private fun initBottomNavigation(){
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.example.floclone
2+
3+
data class Song(
4+
val title : String = "",
5+
val singer : String = "",
6+
)

Heather/FLOClone/app/src/main/java/com/example/floclone/SongActivity.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.floclone
22

3+
import android.content.Intent
34
import android.os.Bundle
45
import android.view.View
56
import androidx.appcompat.app.AppCompatActivity
@@ -17,6 +18,7 @@ class SongActivity : AppCompatActivity() {
1718

1819
// 내리기 버튼 클릭 시 현재 액티비티 종료
1920
binding.songDownIb.setOnClickListener {
21+
returnSongTitle() // 노래 제목 반환
2022
finish()
2123
}
2224

@@ -26,6 +28,12 @@ class SongActivity : AppCompatActivity() {
2628
binding.songPauseIv.setOnClickListener {
2729
setPlayerStatus(true)
2830
}
31+
32+
// MainActivity에서 전달받은 노래 제목과 가수 이름으로 TextView 값 변경
33+
if (intent.hasExtra("title") && intent.hasExtra("singer")) {
34+
binding.songMusicTitleTv.text = intent.getStringExtra("title")
35+
binding.songSingerNameTv.text = intent.getStringExtra("singer")
36+
}
2937
}
3038

3139
// 재생 버튼의 상태를 바꿔주는 메서드
@@ -38,4 +46,18 @@ class SongActivity : AppCompatActivity() {
3846
binding.songPauseIv.visibility = View.VISIBLE
3947
}
4048
}
49+
50+
// 노래 제목을 MainActivity로 반환하는 메서드
51+
private fun returnSongTitle() {
52+
val returnIntent = Intent()
53+
val songTitle = binding.songMusicTitleTv.text.toString()
54+
returnIntent.putExtra("songTitle", songTitle)
55+
setResult(RESULT_OK, returnIntent)
56+
}
57+
58+
override fun onBackPressed() {
59+
returnSongTitle() // 뒤로가기 눌렀을 때도 데이터 반환
60+
super.onBackPressed()
61+
}
62+
4163
}

Heather/FLOClone/app/src/main/res/layout/activity_main.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,19 @@
3333
app:layout_constraintTop_toTopOf="parent">
3434

3535
<TextView
36+
android:id="@+id/main_miniplayer_title_tv"
3637
android:layout_width="wrap_content"
3738
android:layout_height="wrap_content"
3839
android:textSize="13sp"
39-
android:text="제목"
40+
android:text="라일락"
4041
android:textColor="@color/black" />
4142

4243
<TextView
44+
android:id="@+id/main_miniplayer_singer_tv"
4345
android:layout_width="wrap_content"
4446
android:layout_height="wrap_content"
4547
android:textSize="12sp"
46-
47-
android:text="가수"/>
48+
android:text="아이유 (IU)" />
4849

4950
</LinearLayout>
5051

0 commit comments

Comments
 (0)