-
Notifications
You must be signed in to change notification settings - Fork 0
[Fix] 날짜를 바뀌어도 이전에 선택했던 시간대로 보여지도록 수정 (iOS와 통일) #299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -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<FragmentCafeteriaBinding>(), OnItemListen | |||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| val viewpagerFragmentAdapter = CafeteriaViewPagerAdapter(requireActivity()) | ||||||||||||||||||||||||||
| viewPager.adapter = viewpagerFragmentAdapter | ||||||||||||||||||||||||||
| viewPager.setCurrentItem(viewpagerFragmentAdapter.getDefaultFragmentPosition(), false) | ||||||||||||||||||||||||||
| viewPager.setCurrentItem( | ||||||||||||||||||||||||||
| viewpagerFragmentAdapter.getDefaultFragmentPosition(App.appContext), | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| viewpagerFragmentAdapter.getDefaultFragmentPosition(App.appContext), | |
| viewpagerFragmentAdapter.getDefaultFragmentPosition(requireContext()), |
Copilot
AI
May 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The registered OnPageChangeCallback is never unregistered, which may cause a memory leak when the fragment's view is destroyed. Unregister the callback in onDestroyView().
| viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { | |
| override fun onPageSelected(position: Int) { | |
| MySharedPreferences.savePreTimePosition(requireContext(), position) | |
| } | |
| }) | |
| val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() { | |
| override fun onPageSelected(position: Int) { | |
| MySharedPreferences.savePreTimePosition(requireContext(), position) | |
| } | |
| } | |
| viewPager.registerOnPageChangeCallback(pageChangeCallback) | |
| this.pageChangeCallback = pageChangeCallback |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,18 +1,17 @@ | ||
| 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 | ||
|
|
||
| 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) { | ||
|
Comment on lines
+34
to
+35
|
||
| in 0..9 -> 0 | ||
| in 10..15 -> 1 | ||
| in 16..23 -> 2 | ||
| else -> 1 | ||
| } | ||
| } | ||
| return selectedIndex | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다른 함수들처럼 save보다는 set 어떨까요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그리고 아침 점심 저녁은 0,1,2로 저장하기 보다는 ENUM이나 String으로 저장하는게 좋지 않을까요??