Skip to content
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

[Feature] #143 메인 홈 BACK KEY 동작 #144

Merged
merged 2 commits into from
Jan 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.jjbaksa.jjbaksa.ui.login
import android.content.Intent
import android.text.method.HideReturnsTransformationMethod
import android.text.method.PasswordTransformationMethod
import android.view.MotionEvent
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
Expand Down Expand Up @@ -137,4 +138,9 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
private fun goToActivity(classActivity: Class<*>) {
Intent(this, classActivity).also { startActivity(it) }
}

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
controlSoftKeyboard(binding.root, false)
return super.dispatchTouchEvent(ev)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ class MainPageActivity : BaseActivity<ActivityMainPageBinding>() {
}
}
fun showHomeFragment() {
showFragment(naviHomeFragment, NaviHomeFragment.TAG)
binding.navigationView.visibility = View.VISIBLE
binding.ivBottomHome.isSelected = true
binding.tvBottomHome.isSelected = true
binding.bottomHome.performClick()
Expand All @@ -101,6 +103,7 @@ class MainPageActivity : BaseActivity<ActivityMainPageBinding>() {
tvBottomMypage.isSelected = false
}
val findFragment = supportFragmentManager.findFragmentByTag(tag)

supportFragmentManager.fragments.forEach { fm ->
supportFragmentManager.beginTransaction().hide(fm).commitAllowingStateLoss()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.content.Intent
import android.net.Uri
import android.provider.Settings
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
Expand Down Expand Up @@ -48,6 +49,20 @@ class NaviHomeFragment : BaseFragment<FragmentNaviHomeBinding>(), OnMapReadyCall

private lateinit var tedNaverClusteringBuilder: TedNaverClustering<ShopContent>

private var backClickTime = 0L

override var onBackPressedCallBack: OnBackPressedCallback? =
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (System.currentTimeMillis() - backClickTime >= 2000L) {
backClickTime = System.currentTimeMillis()
showSnackBar(getString(R.string.back_finish))
} else {
requireActivity().finish()
}
}
}

private val fusedLocationUtil: FusedLocationUtil by lazy {
FusedLocationUtil(
requireContext(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.jjbaksa.jjbaksa.base.BaseFragment
import com.jjbaksa.jjbaksa.databinding.FragmentNaviMyPageBinding
import com.jjbaksa.jjbaksa.dialog.MyPageBottomSheetDialog
import com.jjbaksa.jjbaksa.ui.mainpage.MainPageActivity
import com.jjbaksa.jjbaksa.ui.mainpage.home.NaviHomeFragment
import com.jjbaksa.jjbaksa.ui.mainpage.mypage.adapter.MyPageAdapter
import com.jjbaksa.jjbaksa.ui.mainpage.mypage.viewmodel.MyPageViewModel
import com.jjbaksa.jjbaksa.ui.setting.SettingActivity
Expand All @@ -24,15 +25,27 @@ class NaviMyPageFragment : BaseFragment<FragmentNaviMyPageBinding>() {
get() = R.layout.fragment_navi_my_page
private val viewModel: MyPageViewModel by activityViewModels()

private var backClickTime = 0L

private val settingResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
// Handle SettingActivity result
}
override var onBackPressedCallBack: OnBackPressedCallback? = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(requireActivity() as MainPageActivity).showHomeFragment()
override var onBackPressedCallBack: OnBackPressedCallback? =
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(requireActivity() as MainPageActivity).showHomeFragment()

if (parentFragmentManager.findFragmentByTag(NaviHomeFragment.TAG)?.isVisible == true) {
if (System.currentTimeMillis() - backClickTime >= 2000L) {
backClickTime = System.currentTimeMillis()
showSnackBar(getString(R.string.back_finish))
} else {
requireActivity().finish()
}
}
}
}
}

override fun initView() {
requireActivity().setExtendView(binding.myPageConstraintLayout)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.jjbaksa.jjbaksa.databinding.FragmentNaviWriteBinding
import com.jjbaksa.jjbaksa.listener.OnClickShopListener
import com.jjbaksa.jjbaksa.listener.PaginationScrollListener
import com.jjbaksa.jjbaksa.ui.mainpage.MainPageActivity
import com.jjbaksa.jjbaksa.ui.mainpage.home.NaviHomeFragment
import com.jjbaksa.jjbaksa.ui.search.AutoCompleteKeywordAdapter
import com.jjbaksa.jjbaksa.ui.search.SearchShopAdapter
import com.jjbaksa.jjbaksa.ui.search.TrendTextAdapter
Expand All @@ -24,13 +25,24 @@ import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class NaviWriteFragment : BaseFragment<FragmentNaviWriteBinding>() {
private var backClickTime = 0L

override val layoutId: Int
get() = R.layout.fragment_navi_write
override var onBackPressedCallBack: OnBackPressedCallback? = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(requireActivity() as MainPageActivity).showHomeFragment()
override var onBackPressedCallBack: OnBackPressedCallback? =
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (parentFragmentManager.findFragmentByTag(NaviHomeFragment.TAG)?.isVisible == true) {
if (System.currentTimeMillis() - backClickTime >= 2000L) {
backClickTime = System.currentTimeMillis()
showSnackBar(getString(R.string.back_finish))
} else {
requireActivity().finish()
}
}
(requireActivity() as MainPageActivity).showHomeFragment()
}
}
}
private val keyboardProvider: KeyboardProvider by lazy { KeyboardProvider(requireContext()) }
private val naviWriteViewModel: NaviWriteViewModel by viewModels()
private val trendTextAdapter: TrendTextAdapter by lazy { TrendTextAdapter(this::onClickTrendKeyword) }
Expand Down Expand Up @@ -144,26 +156,32 @@ class NaviWriteFragment : BaseFragment<FragmentNaviWriteBinding>() {
}
}
}

private fun locationCallback(latitude: Double, longitude: Double) {
naviWriteViewModel.setLocation(latitude, longitude)
}

private fun onClickTrendKeyword(trendText: String) {
binding.etSearch.setText(trendText)
}

private fun onClickKeyword(keyword: String) {
binding.etSearch.setText(keyword)
autoCompleteKeywordAdapter.submitList(listOf())
autoCompleteKeywordAdapter.notifyDataSetChanged()
binding.rvKeyword.visibility = View.GONE
}

override fun onStart() {
fusedLocationUtil.startLocationUpdate()
super.onStart()
}

override fun onStop() {
fusedLocationUtil.stopLocationUpdates()
super.onStop()
}

companion object {
fun newInstance() = NaviWriteFragment()
val TAG = "NaviWriteFragment"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<string name="progress_text">잠시만 기다려주세요.</string>
<string name="non_exist_user">가입되지 않은 정보입니다.</string>
<string name="do_register">가입하기</string>
<string name="back_finish">\'뒤로\'버튼 한번 더 누르시면 종료됩니다.</string>

<string name="terms_agreement">약관 동의</string>
<string name="privacy_term_title">개인정보 이용약관(필수)</string>
Expand Down
Loading