1
1
package com.whyranoid.presentation.myrun
2
2
3
3
import android.os.Bundle
4
- import android.view.LayoutInflater
5
4
import android.view.View
6
- import android.view.ViewGroup
5
+ import android.widget.EditText
7
6
import androidx.appcompat.app.AlertDialog
8
- import androidx.databinding.DataBindingUtil
9
7
import androidx.fragment.app.viewModels
10
8
import com.whyranoid.presentation.R
11
9
import com.whyranoid.presentation.base.BaseFragment
12
- import com.whyranoid.presentation.databinding.DialogEditNickNameBinding
13
10
import com.whyranoid.presentation.databinding.FragmentMyRunBinding
14
11
import com.whyranoid.presentation.util.loadImage
12
+ import com.whyranoid.presentation.util.repeatWhenUiStarted
15
13
import dagger.hilt.android.AndroidEntryPoint
16
14
17
15
@AndroidEntryPoint
18
16
internal class MyRunFragment : BaseFragment <FragmentMyRunBinding >(R .layout.fragment_my_run) {
19
17
20
18
private val viewModel by viewModels<MyRunViewModel >()
21
- private lateinit var dialogViewBinding: DialogEditNickNameBinding
22
19
23
- override fun onCreateView (
24
- inflater : LayoutInflater ,
25
- container : ViewGroup ? ,
26
- savedInstanceState : Bundle ?
27
- ): View ? {
28
- dialogViewBinding =
29
- DataBindingUtil .inflate(inflater, R .layout.dialog_edit_nick_name, container, false )
30
- return super .onCreateView(inflater, container, savedInstanceState)
20
+ private val builder: AlertDialog .Builder by lazy {
21
+ AlertDialog .Builder (requireContext())
31
22
}
32
23
33
24
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
@@ -46,31 +37,37 @@ internal class MyRunFragment : BaseFragment<FragmentMyRunBinding>(R.layout.fragm
46
37
}
47
38
48
39
private fun observeInfo () {
49
- viewModel.nickName.observe(viewLifecycleOwner) {
50
- binding.tvNickName.text = it
40
+ repeatWhenUiStarted {
41
+ viewModel.nickName.collect { nickName ->
42
+ binding.tvNickName.text = nickName
43
+ }
51
44
}
52
45
53
- viewModel.profileImgUri.observe(viewLifecycleOwner) {
54
- binding.ivProfileImage.loadImage(it)
46
+ repeatWhenUiStarted {
47
+ viewModel.profileImgUri.collect { profileImgUri ->
48
+ binding.ivProfileImage.loadImage(profileImgUri)
49
+ }
55
50
}
56
51
}
57
52
58
53
private fun popUpEditNickNameDialog () {
59
- val newNickName = dialogViewBinding.etChangeNickName
60
-
61
- val builder = AlertDialog .Builder (requireContext())
62
- .setView(dialogViewBinding.root)
63
- .setPositiveButton(
64
- getString(R .string.my_run_edit_nick_name_dialog_positive)
65
- ) { _, _ ->
66
- viewModel.updateNickName(newNickName.text.toString())
67
- }
68
- .setNegativeButton(
69
- getString(R .string.my_run_edit_nick_name_dialog_negative)
70
- ) { dialog, _ ->
71
- dialog.dismiss()
72
- }
54
+ val dialogView = layoutInflater.inflate(R .layout.dialog_edit_nick_name, null )
73
55
74
- builder.show()
56
+ if (dialogView.parent != null ) {
57
+ builder.show()
58
+ } else {
59
+ builder.setView(dialogView)
60
+ .setPositiveButton(
61
+ getString(R .string.my_run_edit_nick_name_dialog_positive)
62
+ ) { dialog, _ ->
63
+ viewModel.updateNickName(dialogView.findViewById<EditText >(R .id.et_change_nick_name).text.toString())
64
+ dialog.dismiss()
65
+ }
66
+ .setNegativeButton(
67
+ getString(R .string.my_run_edit_nick_name_dialog_negative)
68
+ ) { dialog, _ ->
69
+ dialog.dismiss()
70
+ }.show()
71
+ }
75
72
}
76
73
}
0 commit comments