Commit ec7de180 authored by shohboz's avatar shohboz

[UPD] MUS-107 Feature, updated home page drawer

parent 267301d2
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.Manifest
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.firebase.FirebaseApp import com.google.firebase.FirebaseApp
...@@ -14,12 +16,14 @@ import com.google.firebase.messaging.FirebaseMessaging ...@@ -14,12 +16,14 @@ import com.google.firebase.messaging.FirebaseMessaging
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityMainBinding import com.mobiuz.app.databinding.ActivityMainBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.FullScreenDialog import com.mobiuz.app.dev.ui.global.FullScreenDialog
import com.mobiuz.app.dev.utils.extensions.customLog import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.setupWithNavController import com.mobiuz.app.dev.utils.extensions.setupWithNavController
import com.mobiuz.app.utils.checkPermission import com.mobiuz.app.dev.utils.extensions.showCustomExitDialog
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import javax.inject.Inject import javax.inject.Inject
...@@ -34,6 +38,7 @@ class MainActivity : AppCompatActivity() { ...@@ -34,6 +38,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var bottomNavigationView: BottomNavigationView private lateinit var bottomNavigationView: BottomNavigationView
private var currentNavController: LiveData<NavController>? = null private var currentNavController: LiveData<NavController>? = null
private val viewModel: MainViewModel by viewModels()
private lateinit var mFirebaseAnalytics: FirebaseAnalytics private lateinit var mFirebaseAnalytics: FirebaseAnalytics
...@@ -56,23 +61,98 @@ class MainActivity : AppCompatActivity() { ...@@ -56,23 +61,98 @@ class MainActivity : AppCompatActivity() {
setupBottomNavigationBar() setupBottomNavigationBar()
} }
// intent?.let { setUpUI()
// val arg = it.getStringExtra(CONSTANTS.FIRST) ?: "" collects()
// if (arg.isEmpty()) {
// val dialog = FullScreenDialog() intent?.let {
// dialog.setOnPinDoneListener { val arg = it.getStringExtra(CONSTANTS.FIRST) ?: ""
// pref.setUserToken("") if (arg.isEmpty()) {
// pref.isRegistered = false val dialog = FullScreenDialog()
// pref.pin_code = "" dialog.setOnPinDoneListener {
// val intent = Intent(this, AuthActivity::class.java) pref.setUserToken("")
// intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME pref.isRegistered = false
// startActivity(intent) pref.pin_code = ""
// finish() val intent = Intent(this, AuthActivity::class.java)
// } intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
// dialog.show(supportFragmentManager, "tag") startActivity(intent)
// } finish()
// } }
dialog.show(supportFragmentManager, "tag")
}
}
customLog("token: ${pref.getUserToken()}") customLog("token: ${pref.getUserToken()}")
}
private fun setUpUI() {
bn.apply {
header.txtUserPhone.text = pref.userPhone
btnExit.setOnClickListener {
showCustomExitDialog {
pref.setUserToken("")
pref.isRegistered = false
pref.pin_code = ""
val intent = Intent(this@MainActivity, AuthActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
finish()
bn.drawerLayout.closeDrawer(GravityCompat.START)
}
}
btnLanguage.setOnClickListener {
bn.drawerLayout.closeDrawer(GravityCompat.START)
}
btnSafety.setOnClickListener {
bn.drawerLayout.closeDrawer(GravityCompat.START)
}
btnSupport.setOnClickListener {
bn.drawerLayout.closeDrawer(GravityCompat.START)
}
}
}
private fun collects() {
lifecycleScope.launchWhenStarted {
viewModel.mainIndexUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
bn.drawerLayout.openDrawer(GravityCompat.START)
}
else -> Unit
}
}
}
lifecycleScope.launchWhenStarted {
viewModel.userNameUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
bn.header.txtUserName.text = it.data
}
else -> Unit
}
}
}
lifecycleScope.launchWhenStarted {
viewModel.swipeDrawerUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
if (it.data) {
bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
} else {
bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
}
}
else -> Unit
}
}
}
} }
private fun setupBottomNavigationBar() { private fun setupBottomNavigationBar() {
......
package com.mobiuz.app.dev
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.network.repository.AuthRepository
import com.mobiuz.app.dev.network.repository.MainRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
class MainViewModel @Inject constructor(
private val repository: MainRepository
) : ViewModel() {
private val _swipeDrawerUiState = MutableStateFlow<UiStateObject<Boolean>>(UiStateObject.EMPTY)
val swipeDrawerUiState: StateFlow<UiStateObject<Boolean>> = _swipeDrawerUiState
fun isSwipeDrawer(swipe: Boolean){
_swipeDrawerUiState.value = UiStateObject.SUCCESS(swipe)
}
private val _userNameUiState = MutableStateFlow<UiStateObject<String>>(UiStateObject.EMPTY)
val userNameUiState: StateFlow<UiStateObject<String>> = _userNameUiState
fun setUserName(name: String){
_userNameUiState.value = UiStateObject.SUCCESS(name)
}
private val _mainIndexUiState = MutableStateFlow<UiStateObject<Long>>(UiStateObject.EMPTY)
val mainIndexUiState: StateFlow<UiStateObject<Long>> = _mainIndexUiState
fun mainIndex(status:Long) = viewModelScope.launch {
_mainIndexUiState.value = UiStateObject.SUCCESS(status)
// _mainIndexUiState.value = repository.mainIndex()
}
}
\ No newline at end of file
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.ui.base.BaseFragment import com.mobiuz.app.dev.ui.base.BaseFragment
class MotionFragment : BaseFragment(R.layout.home_motion) { class MotionFragment : BaseFragment(R.layout.home_motion) {
private lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mainViewModel.isSwipeDrawer(false)
}
override fun setUpUI() { override fun setUpUI() {
......
...@@ -133,6 +133,7 @@ class AuthRepository @Inject constructor( ...@@ -133,6 +133,7 @@ class AuthRepository @Inject constructor(
when { when {
res.status -> { res.status -> {
pref.isRegistered = true
pref.setUserToken(res.data?.token) pref.setUserToken(res.data?.token)
UiStateObject.SUCCESS(res.message) UiStateObject.SUCCESS(res.message)
} }
......
...@@ -12,10 +12,12 @@ import androidx.core.view.GravityCompat ...@@ -12,10 +12,12 @@ import androidx.core.view.GravityCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.widget.NestedScrollView import androidx.core.widget.NestedScrollView
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentHomeBinding import com.mobiuz.app.databinding.FragmentHomeBinding
import com.mobiuz.app.dev.AuthActivity import com.mobiuz.app.dev.AuthActivity
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.Customer import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.UiStateObject import com.mobiuz.app.dev.network.model.UiStateObject
...@@ -36,17 +38,19 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -36,17 +38,19 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
private var _bn: FragmentHomeBinding? = null private var _bn: FragmentHomeBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: HomeViewModel by viewModels() private val viewModel: HomeViewModel by viewModels()
private lateinit var mainViewModel: MainViewModel
private var customer: Customer? = null private var customer: Customer? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
viewModel.mainIndex() viewModel.mainIndex()
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentHomeBinding.bind(view) _bn = FragmentHomeBinding.bind(view)
mainViewModel.isSwipeDrawer(true)
setUpUI() setUpUI()
collects() collects()
...@@ -55,52 +59,24 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -55,52 +59,24 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
btnExit.setOnClickListener {
showCustomExitDialog {
pref.setUserToken("")
pref.isRegistered = false
pref.pin_code = ""
val intent = Intent(requireContext(), AuthActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
requireActivity().finish()
}
}
btnLanguage.setOnClickListener {
}
btnSafety.setOnClickListener {
}
btnSupport.setOnClickListener {
}
}
bn.content.apply {
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
bn.drawerLayout.openDrawer(GravityCompat.START) mainViewModel.mainIndex(System.currentTimeMillis())
} }
nestedScrollView.setOnScrollChangeListener(object : NestedScrollView.OnScrollChangeListener{ nestedScrollView.setOnScrollChangeListener(
override fun onScrollChange(v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) { NestedScrollView.OnScrollChangeListener {
Log.e("SSS","scrollX_"+scrollX+"_scrollY_"+scrollY+"_oldScrollX_"+oldScrollX+"_oldScrollY_"+oldScrollY) v, scrollX, scrollY, oldScrollX, oldScrollY ->
if(scrollY > 100){ if(scrollY > 120){
toolbarInsideLayout.isVisible = true toolbarInsideLayout.isVisible = true
// requireActivity().window.statusBarColor = Color.RED // requireActivity().window.statusBarColor = Color.RED
// toolbar.setBackgroundColor(resources.getColor(R.color.primary100)) // toolbar.setBackgroundColor(resources.getColor(R.color.primary100))
} }
if(scrollY < 90){ if(scrollY < 100){
toolbarInsideLayout.isVisible = false toolbarInsideLayout.isVisible = false
// requireActivity().window.statusBarColor = Color.TRANSPARENT // requireActivity().window.statusBarColor = Color.TRANSPARENT
// toolbar.setBackgroundColor(Color.TRANSPARENT) // toolbar.setBackgroundColor(Color.TRANSPARENT)
}
} }
}) })
} }
...@@ -133,7 +109,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -133,7 +109,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
try { try {
customLog("customer:$customer") customLog("customer:$customer")
customer?.customer?.info?.let { customer?.customer?.info?.let {
bn.content.apply { bn.apply {
txtBalance.text = "${it.balance?.amount?.toMoneyFormat()} ${it.balance?.currency}" txtBalance.text = "${it.balance?.amount?.toMoneyFormat()} ${it.balance?.currency}"
it.counters.let { it.counters.let {
txtCountMb.text = it?.BYTE?.value?.toMoneyFormat() ?: "0" txtCountMb.text = it?.BYTE?.value?.toMoneyFormat() ?: "0"
...@@ -145,11 +121,10 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -145,11 +121,10 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
txtCountSms.text = it?.ITEM?.value?.toMoneyFormat() ?: "0" txtCountSms.text = it?.ITEM?.value?.toMoneyFormat() ?: "0"
txtTypeSms.text = it?.ITEM?.unit ?: "sms" txtTypeSms.text = it?.ITEM?.unit ?: "sms"
} }
bn.header.txtUserName.text = customer?.customer?.name ?: "" mainViewModel.setUserName(customer?.customer?.name ?: "Unnamed User")
txtTarif.text = customer?.customer?.tarifi?.name ?: getString(R.string.my_tarif) txtTarif.text = customer?.customer?.tarifi?.name ?: getString(R.string.my_tarif)
txtMyNumber.text = pref.userPhone txtMyNumber.text = pref.userPhone
toolbarMyNumber.text = pref.userPhone toolbarMyNumber.text = pref.userPhone
bn.header.txtUserPhone.text = pref.userPhone
} }
} }
} catch (e: Exception) { } catch (e: Exception) {
......
...@@ -81,6 +81,14 @@ fun Fragment.showCustomExitDialog(block: () -> Unit) { ...@@ -81,6 +81,14 @@ fun Fragment.showCustomExitDialog(block: () -> Unit) {
dialog.show(childFragmentManager, "childFragmentManager") dialog.show(childFragmentManager, "childFragmentManager")
} }
fun FragmentActivity.showCustomExitDialog(block: () -> Unit) {
val dialog = ExitDialog()
dialog.setOnDoneListener {
block()
}
dialog.show(supportFragmentManager, "childFragmentManager")
}
//fun Fragment.showCustomDialog(string: String, status: Boolean, block: () -> Unit) { //fun Fragment.showCustomDialog(string: String, status: Boolean, block: () -> Unit) {
// val snackBar = Snackbar.make(this.requireView(),string, Snackbar.LENGTH_LONG) // val snackBar = Snackbar.make(this.requireView(),string, Snackbar.LENGTH_LONG)
// .setBackgroundTint(Color.GRAY) // .setBackgroundTint(Color.GRAY)
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent" <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:fitsSystemWindows="false" android:fitsSystemWindows="false"
xmlns:app="http://schemas.android.com/apk/res-auto"> tools:openDrawer="start">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView <androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment" android:id="@+id/nav_host_fragment"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -24,7 +30,175 @@ ...@@ -24,7 +30,175 @@
app:itemTextColor="@color/nav_item_tint" app:itemTextColor="@color/nav_item_tint"
app:labelVisibilityMode="labeled" app:labelVisibilityMode="labeled"
app:menu="@menu/bottom_nav_menu" /> app:menu="@menu/bottom_nav_menu" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
android:layout_gravity="start"
android:background="@color/white100">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/header"
layout="@layout/layout_home_header"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:background="@color/grey30"
android:layout_marginTop="@dimen/_14sdp"
android:layout_height="1dp"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:paddingVertical="16dp"
android:paddingStart="30dp"
android:paddingEnd="10dp"
android:background="?android:selectableItemBackground"
android:id="@+id/btn_safety"
android:layout_marginTop="@dimen/_24sdp"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_safety"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/bezopasnost"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginStart="10dp"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:paddingVertical="10dp"
android:id="@+id/btn_language"
android:paddingStart="30dp"
android:paddingEnd="10dp"
android:background="?android:selectableItemBackground"
android:layout_marginTop="@dimen/_10sdp"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_image_language"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="@string/language_app"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginStart="10dp"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="Русский"
android:textSize="12sp"
android:textColor="@color/grey80"
android:layout_marginStart="10dp"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:paddingVertical="16dp"
android:id="@+id/btn_support"
android:paddingStart="30dp"
android:paddingEnd="10dp"
android:background="?android:selectableItemBackground"
android:layout_marginTop="@dimen/_10sdp"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_image_support"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/support"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginStart="10dp"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="16dp"
android:paddingStart="30dp"
android:layout_marginBottom="16dp"
android:paddingEnd="10dp"
android:id="@+id/btn_exit"
android:background="?android:selectableItemBackground"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_log_out" />
<TextView
android:id="@+id/txt_user_name"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginStart="12dp"
android:layout_height="wrap_content"
android:text="@string/exit"
android:layout_gravity="center"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_user_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="v 0.01.1"
android:textColor="@color/grey80"
android:layout_gravity="center"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</com.google.android.material.navigation.NavigationView>
</LinearLayout> </androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:padding="32dp"
android:paddingHorizontal="@dimen/_12sdp" android:paddingHorizontal="@dimen/_12sdp"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<ImageView <ImageView
android:layout_width="84dp" android:layout_width="84dp"
android:src="@drawable/ic_user" android:src="@drawable/ic_user"
android:layout_marginTop="@dimen/_24sdp" android:layout_marginTop="20dp"
android:layout_height="84dp"/> android:layout_height="84dp"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph_auth" android:id="@+id/nav_graph_auth"
app:startDestination="@id/myVerificationFragment"> app:startDestination="@id/checkPhoneFragment">
<fragment <fragment
android:id="@+id/checkPhoneFragment" android:id="@+id/checkPhoneFragment"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment