@@ -4,11 +4,18 @@ import android.app.Activity
4
4
import android.content.Context
5
5
import android.content.Intent
6
6
import android.os.Bundle
7
- import android.view.MenuItem
7
+ import androidx.activity.compose.setContent
8
8
import androidx.appcompat.app.AppCompatActivity
9
- import androidx.viewpager2.widget.ViewPager2
9
+ import androidx.compose.foundation.background
10
+ import androidx.compose.foundation.layout.fillMaxSize
11
+ import androidx.compose.runtime.getValue
12
+ import androidx.compose.runtime.mutableStateOf
13
+ import androidx.compose.runtime.remember
14
+ import androidx.compose.runtime.setValue
15
+ import androidx.compose.ui.Modifier
16
+ import androidx.navigation.compose.rememberNavController
17
+ import com.ku_stacks.ku_ring.designsystem.kuringtheme.KuringTheme
10
18
import com.ku_stacks.ku_ring.domain.WebViewNotice
11
- import com.ku_stacks.ku_ring.main.databinding.ActivityMainBinding
12
19
import com.ku_stacks.ku_ring.ui_util.KuringNavigator
13
20
import com.ku_stacks.ku_ring.ui_util.showToast
14
21
import dagger.hilt.android.AndroidEntryPoint
@@ -17,23 +24,9 @@ import javax.inject.Inject
17
24
@AndroidEntryPoint
18
25
class MainActivity : AppCompatActivity () {
19
26
20
- private lateinit var binding: ActivityMainBinding
21
-
22
27
@Inject
23
28
lateinit var navigator: KuringNavigator
24
29
25
- private val pageChangeCallback = object : ViewPager2 .OnPageChangeCallback () {
26
- override fun onPageSelected (position : Int ) {
27
- binding.mainBottomNavigation.selectedItemId = when (position) {
28
- 0 -> R .id.notice_screen
29
- 1 -> R .id.archive_screen
30
- 2 -> R .id.campus_map_screen
31
- 3 -> R .id.setting_screen
32
- else -> throw IllegalStateException (" no such main viewpager position" )
33
- }
34
- }
35
- }
36
-
37
30
private var backPressedTime = 0L
38
31
39
32
override fun onNewIntent (intent : Intent ) {
@@ -51,40 +44,23 @@ class MainActivity : AppCompatActivity() {
51
44
navToNoticeActivity(webViewNotice)
52
45
}
53
46
54
- setupBinding()
55
- setupView()
56
- }
57
-
58
- private fun setupBinding () {
59
- binding = ActivityMainBinding .inflate(layoutInflater)
60
- setContentView(binding.root)
61
- }
62
-
63
- private fun setupView () {
64
- val pagerAdapter = MainPagerAdapter (supportFragmentManager, lifecycle)
65
-
66
- binding.mainViewPager.apply {
67
- adapter = pagerAdapter
68
- registerOnPageChangeCallback(pageChangeCallback)
69
- isUserInputEnabled = false
70
- offscreenPageLimit = pagerAdapter.itemCount
71
- }
72
-
73
- binding.mainBottomNavigation.setOnItemSelectedListener {
74
- navigationSelected(it)
75
- }
76
- }
77
-
78
- private fun navigationSelected (item : MenuItem ): Boolean {
79
- when (item.setChecked(true ).itemId) {
80
- R .id.notice_screen -> binding.mainViewPager.setCurrentItem(0 , false )
81
- R .id.archive_screen -> binding.mainViewPager.setCurrentItem(1 , false )
82
- R .id.campus_map_screen -> binding.mainViewPager.setCurrentItem(2 , false )
83
- R .id.setting_screen -> binding.mainViewPager.setCurrentItem(3 , false )
84
- else -> return false
47
+ setContent {
48
+ KuringTheme {
49
+ var currentRoute: MainScreenRoute by remember { mutableStateOf(MainScreenRoute .Notice ) }
50
+ val navController = rememberNavController()
51
+ MainScreen (
52
+ navController = navController,
53
+ currentRoute = currentRoute,
54
+ onNavigateToRoute = {
55
+ if (currentRoute != it) {
56
+ currentRoute = it
57
+ navController.navigate(it)
58
+ }
59
+ },
60
+ modifier = Modifier .fillMaxSize().background(KuringTheme .colors.background),
61
+ )
62
+ }
85
63
}
86
-
87
- return true
88
64
}
89
65
90
66
private fun navToNoticeActivity (webViewNotice : WebViewNotice ) {
@@ -100,11 +76,6 @@ class MainActivity : AppCompatActivity() {
100
76
}
101
77
}
102
78
103
- override fun onDestroy () {
104
- super .onDestroy()
105
- binding.mainViewPager.unregisterOnPageChangeCallback(pageChangeCallback)
106
- }
107
-
108
79
companion object {
109
80
fun createIntent (context : Context ) = Intent (context, MainActivity ::class .java)
110
81
0 commit comments