diff --git a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt b/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt index 91e946e98..85e73637d 100644 --- a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt +++ b/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt @@ -4,7 +4,6 @@ package com.eatssu.android.data import android.content.Context import android.content.SharedPreferences -//자동 로그인을 위한 SharedPreferences object MySharedPreferences { private val MY_ACCOUNT: String = "account" @@ -100,4 +99,14 @@ object MySharedPreferences { context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) return prefs.getBoolean("ALARM_ON", false) } + + fun savePreTimePosition(context: Context, position: Int) { + val prefs = context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) + prefs.edit().putInt("PRE_TIME_POSITION", position).apply() + } + + fun getPreTimePosition(context: Context): Int { + val prefs = context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) + return prefs.getInt("PRE_TIME_POSITION", -1) + } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt index 88f85cbf9..b029af45a 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaFragment.kt @@ -10,9 +10,11 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 +import com.eatssu.android.App +import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.databinding.FragmentCafeteriaBinding -import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.MainViewModel +import com.eatssu.android.presentation.base.BaseFragment import com.eatssu.android.presentation.cafeteria.calendar.CalendarAdapter import com.eatssu.android.presentation.cafeteria.calendar.CalendarAdapter.OnItemListener import com.eatssu.android.presentation.util.CalendarUtil @@ -45,11 +47,20 @@ class CafeteriaFragment : BaseFragment(), OnItemListen val viewpagerFragmentAdapter = CafeteriaViewPagerAdapter(requireActivity()) viewPager.adapter = viewpagerFragmentAdapter - viewPager.setCurrentItem(viewpagerFragmentAdapter.getDefaultFragmentPosition(), false) + viewPager.setCurrentItem( + viewpagerFragmentAdapter.getDefaultFragmentPosition(App.appContext), + false + ) val tabTitles = listOf("아침", "점심", "저녁") TabLayoutMediator(tabLayout, viewPager) { tab, position -> tab.text = tabTitles[position] }.attach() + viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + MySharedPreferences.savePreTimePosition(requireContext(), position) + } + }) + initWidgets() CalendarUtil.selectedDate = LocalDate.now() mainViewModel.setData(CalendarUtil.selectedDate) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt index ef7279195..57224e4e3 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/CafeteriaViewPagerAdapter.kt @@ -1,10 +1,10 @@ package com.eatssu.android.presentation.cafeteria -import android.os.Build -import androidx.annotation.RequiresApi +import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter +import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.data.enums.Time import com.eatssu.android.presentation.cafeteria.menu.MenuFragment import java.time.LocalTime @@ -12,7 +12,6 @@ import java.time.LocalTime class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) { - // 1. ViewPager2에 연결할 Fragment 들을 생성 private val fragmentList = listOf( MenuFragment.newInstance(Time.MORNING), MenuFragment.newInstance(Time.LUNCH), @@ -21,33 +20,24 @@ class CafeteriaViewPagerAdapter(fragmentActivity: FragmentActivity) : lateinit var menuDate : String - // 2. ViesPager2에서 노출시킬 Fragment 의 갯수 설정 override fun getItemCount(): Int { return fragmentList.size } - // 3. ViewPager2의 각 페이지에서 노출할 Fragment 설정 override fun createFragment(position: Int): Fragment { - /*if(fragmentList[position] is LunchFragment) { - (fragmentList[position] as LunchFragment).setDate(menuDate) - }*/ return fragmentList[position] } - // 4. 디폴트로 노출할 Fragment의 위치를 설정 - @RequiresApi(Build.VERSION_CODES.O) - fun getDefaultFragmentPosition(): Int { - // 여기에서 디폴트로 노출할 Fragment의 위치를 반환해줍니다. - // 예를 들어, 첫 번째 Fragment를 디폴트로 설정하려면 0을 반환합니다. - - val time = LocalTime.now() - - val selectedIndex: Int = when (time.hour) { - in 0..9 -> 0 //아침 - in 10..15 -> 1 //점심 - in 16..24 -> 2 //저녁 - else -> 1 + fun getDefaultFragmentPosition(context: Context): Int { + val savedPosition = MySharedPreferences.getPreTimePosition(context) + return if (savedPosition in 0..2) savedPosition else { + val time = LocalTime.now() + when (time.hour) { + in 0..9 -> 0 + in 10..15 -> 1 + in 16..23 -> 2 + else -> 1 + } } - return selectedIndex } }