Skip to content

Commit b46d5b5

Browse files
focus change listener changed to text watcher
1 parent bd3beac commit b46d5b5

File tree

2 files changed

+49
-30
lines changed

2 files changed

+49
-30
lines changed

app/src/main/java/com/github/code/gambit/ui/activity/main/MainActivity.kt

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.activity.result.ActivityResultLauncher
1010
import androidx.activity.viewModels
1111
import androidx.appcompat.app.AppCompatActivity
1212
import androidx.constraintlayout.motion.widget.MotionLayout
13+
import androidx.fragment.app.Fragment
1314
import androidx.navigation.NavController
1415
import androidx.navigation.fragment.NavHostFragment
1516
import androidx.navigation.ui.NavigationUI
@@ -24,8 +25,8 @@ import com.github.code.gambit.databinding.ActivityMainBinding
2425
import com.github.code.gambit.helper.file.FileUploadState
2526
import com.github.code.gambit.ui.OnItemClickListener
2627
import com.github.code.gambit.ui.fragment.BottomNavController
27-
import com.github.code.gambit.ui.fragment.auth.AuthFragment
2828
import com.github.code.gambit.ui.fragment.home.main.HomeFragment
29+
import com.github.code.gambit.ui.fragment.profile.ProfileFragment
2930
import com.github.code.gambit.utility.SystemManager
3031
import com.github.code.gambit.utility.extention.bottomNavHide
3132
import com.github.code.gambit.utility.extention.bottomNavShow
@@ -75,6 +76,10 @@ class MainActivity : AppCompatActivity(), BottomNavController {
7576
binding.root.addTransitionListener(object : MotionLayout.TransitionListener {
7677
override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
7778
hideKeyboard()
79+
val frag = getCurrentFragment()
80+
if (frag is ProfileFragment) {
81+
frag.looseFocus()
82+
}
7883
}
7984

8085
override fun onTransitionChange(p0: MotionLayout?, p1: Int, p2: Int, p3: Float) {}
@@ -213,36 +218,33 @@ class MainActivity : AppCompatActivity(), BottomNavController {
213218

214219
override fun onBackPressed() {
215220
if (!userManager.isAuthenticated()) {
216-
val fragment =
217-
supportFragmentManager.findFragmentById(R.id.nav_host_fragment_container)?.childFragmentManager?.fragments?.first()
218-
if (fragment is AuthFragment && fragment.currentPage != 0) {
219-
fragment.setPage(0)
220-
return
221-
}
222221
super.onBackPressed()
223222
return
224223
}
225-
val hostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment_container)
226-
if (hostFragment is NavHostFragment) {
227-
when (val fragment = hostFragment.childFragmentManager.fragments.first()) {
228-
is HomeFragment -> {
229-
when {
230-
fragment.isFilterEnable() -> {
231-
fragment.closeFilter()
232-
}
233-
fragment.isSearchEnable() -> {
234-
fragment.closeSearch()
235-
}
236-
else -> {
237-
finish()
238-
}
224+
when (val fragment = getCurrentFragment()) {
225+
is HomeFragment -> {
226+
when {
227+
fragment.isFilterEnable() -> {
228+
fragment.closeFilter()
229+
}
230+
fragment.isSearchEnable() -> {
231+
fragment.closeSearch()
232+
}
233+
else -> {
234+
finish()
239235
}
240236
}
241-
else -> super.onBackPressed()
242237
}
243-
} else {
244-
super.onBackPressed()
238+
else -> super.onBackPressed()
239+
}
240+
}
241+
242+
fun getCurrentFragment(): Fragment? {
243+
val hostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment_container)
244+
if (hostFragment is NavHostFragment) {
245+
return hostFragment.childFragmentManager.fragments.first()
245246
}
247+
return null
246248
}
247249

248250
fun getAddFab(): View {

app/src/main/java/com/github/code/gambit/ui/fragment/profile/ProfileFragment.kt

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.github.code.gambit.ui.fragment.profile
22

33
import android.os.Bundle
4+
import android.text.Editable
5+
import android.text.TextWatcher
46
import android.view.View
57
import androidx.core.view.isVisible
68
import androidx.fragment.app.Fragment
@@ -32,6 +34,8 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
3234
private lateinit var changePasswordListener1: View.OnClickListener
3335
private lateinit var changePasswordListener2: View.OnClickListener
3436

37+
private var isFirstEdit = true
38+
3539
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
3640
super.onViewCreated(view, savedInstanceState)
3741
_binding = FragmentProfileBinding.bind(view)
@@ -73,14 +77,27 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
7377
}
7478

7579
private fun setClickListeners() {
76-
binding.fullName.editText?.setOnFocusChangeListener { _, b ->
77-
if (b) {
78-
binding.cancelButton.show()
79-
binding.doneButton.show()
80+
binding.fullName.editText?.addTextChangedListener(object : TextWatcher {
81+
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
82+
83+
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
84+
if (!isFirstEdit) {
85+
binding.cancelButton.show()
86+
binding.doneButton.show()
87+
if (s.toString() == user.name) {
88+
binding.cancelButton.hide()
89+
binding.doneButton.hide()
90+
}
91+
} else {
92+
isFirstEdit = false
93+
}
8094
}
81-
}
95+
96+
override fun afterTextChanged(s: Editable?) {}
97+
})
8298
binding.cancelButton.setOnClickListener {
8399
looseFocus()
100+
it.hide()
84101
binding.fullName.setText(user.name)
85102
if (binding.oldPassword.isVisible) {
86103
binding.passwordContainer.hide()
@@ -143,7 +160,7 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
143160
return true
144161
}
145162

146-
private fun looseFocus() {
163+
fun looseFocus() {
147164
binding.cancelButton.hide()
148165
binding.doneButton.hide()
149166
binding.fullName.editText!!.clearFocus()

0 commit comments

Comments
 (0)