diff --git a/android/festago/app/src/main/AndroidManifest.xml b/android/festago/app/src/main/AndroidManifest.xml
index 106bd5e0d..01e09ec2f 100644
--- a/android/festago/app/src/main/AndroidManifest.xml
+++ b/android/festago/app/src/main/AndroidManifest.xml
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools">
+
-
@@ -26,6 +24,12 @@
+
+
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt
index 0e2ec5e97..13d11cd9b 100644
--- a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt
@@ -37,7 +37,7 @@ class MainViewModel(
fun loadTicket() {
viewModelScope.launch(exceptionHandler) {
- _ticket.postValue(ticketRepository.loadTicket(0L).toPresentation())
+ _ticket.postValue(ticketRepository.loadTicket(9L).toPresentation())
}
}
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt
new file mode 100644
index 000000000..584534f85
--- /dev/null
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt
@@ -0,0 +1,59 @@
+package com.festago.festago.presentation.ui.home
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import com.festago.festago.R
+import com.festago.festago.databinding.ActivityHomeBinding
+import com.festago.festago.presentation.ui.home.festivallist.FestivalListFragment
+import com.festago.festago.presentation.ui.home.mypage.MyPageFragment
+import com.festago.festago.presentation.ui.home.ticketlist.TicketListFragment
+
+class HomeActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val binding = ActivityHomeBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ binding.bnvHome.setOnItemSelectedListener {
+ when (getItemType(it.itemId)) {
+ HomeItemType.FESTIVAL_LIST -> changeFragment()
+ HomeItemType.TICKET_LIST -> changeFragment()
+ HomeItemType.MY_PAGE -> changeFragment()
+ }
+ true
+ }
+
+ changeFragment()
+ }
+
+ private fun getItemType(menuItemId: Int): HomeItemType {
+ return when (menuItemId) {
+ R.id.item_festival -> HomeItemType.FESTIVAL_LIST
+ R.id.item_mypage -> HomeItemType.MY_PAGE
+ R.id.item_ticket -> HomeItemType.TICKET_LIST
+ else -> throw IllegalArgumentException("menu item id not found")
+ }
+ }
+
+ private inline fun changeFragment() {
+ val tag = T::class.java.name
+ val fragmentTransaction = supportFragmentManager.beginTransaction()
+
+ supportFragmentManager.fragments.forEach { fragment ->
+ fragmentTransaction.hide(fragment)
+ }
+
+ var targetFragment = supportFragmentManager.findFragmentByTag(tag)
+
+ if (targetFragment == null) {
+ targetFragment = T::class.java.newInstance()
+ fragmentTransaction.add(R.id.fcv_home_container, targetFragment, tag)
+ } else {
+ fragmentTransaction.show(targetFragment)
+ }
+
+ fragmentTransaction.commit()
+ }
+}
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt
new file mode 100644
index 000000000..4c4ff6d7b
--- /dev/null
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt
@@ -0,0 +1,7 @@
+package com.festago.festago.presentation.ui.home
+
+enum class HomeItemType {
+ FESTIVAL_LIST,
+ TICKET_LIST,
+ MY_PAGE,
+}
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt
new file mode 100644
index 000000000..9e4642002
--- /dev/null
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt
@@ -0,0 +1,29 @@
+package com.festago.festago.presentation.ui.home.festivallist
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.festago.festago.R
+import com.festago.festago.databinding.FragmentFestivalListBinding
+
+class FestivalListFragment : Fragment(R.layout.fragment_festival_list) {
+
+ private var _binding: FragmentFestivalListBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?,
+ ): View {
+ _binding = FragmentFestivalListBinding.inflate(inflater)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ _binding = null
+ super.onDestroyView()
+ }
+}
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt
new file mode 100644
index 000000000..11df5d621
--- /dev/null
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt
@@ -0,0 +1,29 @@
+package com.festago.festago.presentation.ui.home.mypage
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.festago.festago.R
+import com.festago.festago.databinding.FragmentMyPageBinding
+
+class MyPageFragment : Fragment(R.layout.fragment_my_page) {
+
+ private var _binding: FragmentMyPageBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?,
+ ): View {
+ _binding = FragmentMyPageBinding.inflate(inflater)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ _binding = null
+ super.onDestroyView()
+ }
+}
diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt
new file mode 100644
index 000000000..903ed145c
--- /dev/null
+++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt
@@ -0,0 +1,29 @@
+package com.festago.festago.presentation.ui.home.ticketlist
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.festago.festago.R
+import com.festago.festago.databinding.FragmentTicketListBinding
+
+class TicketListFragment : Fragment(R.layout.fragment_ticket_list) {
+
+ private var _binding: FragmentTicketListBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?,
+ ): View {
+ _binding = FragmentTicketListBinding.inflate(inflater)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ _binding = null
+ super.onDestroyView()
+ }
+}
diff --git a/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml
new file mode 100644
index 000000000..9edf2ad7c
--- /dev/null
+++ b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml
new file mode 100644
index 000000000..bd8dc808f
--- /dev/null
+++ b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/android/festago/app/src/main/res/layout/activity_home.xml b/android/festago/app/src/main/res/layout/activity_home.xml
new file mode 100644
index 000000000..45ad4cb2d
--- /dev/null
+++ b/android/festago/app/src/main/res/layout/activity_home.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/festago/app/src/main/res/layout/fragment_festival_list.xml b/android/festago/app/src/main/res/layout/fragment_festival_list.xml
new file mode 100644
index 000000000..b803ce0d0
--- /dev/null
+++ b/android/festago/app/src/main/res/layout/fragment_festival_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/android/festago/app/src/main/res/layout/fragment_my_page.xml b/android/festago/app/src/main/res/layout/fragment_my_page.xml
new file mode 100644
index 000000000..b05c9947a
--- /dev/null
+++ b/android/festago/app/src/main/res/layout/fragment_my_page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/android/festago/app/src/main/res/layout/fragment_ticket_list.xml b/android/festago/app/src/main/res/layout/fragment_ticket_list.xml
new file mode 100644
index 000000000..06f9b8d17
--- /dev/null
+++ b/android/festago/app/src/main/res/layout/fragment_ticket_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml b/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml
new file mode 100644
index 000000000..6689bfc70
--- /dev/null
+++ b/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml
@@ -0,0 +1,21 @@
+
+
diff --git a/android/festago/app/src/main/res/values/strings.xml b/android/festago/app/src/main/res/values/strings.xml
index c147dabdb..fcc73bde3 100644
--- a/android/festago/app/src/main/res/values/strings.xml
+++ b/android/festago/app/src/main/res/values/strings.xml
@@ -21,4 +21,9 @@
입장 전
입장 완료
외출중
+
+
+ 축제 목록
+ 티켓 목록
+ 마이페이지