Я создаю приложение для проверки журнала шины, однако в конечном итоге я столкнулся с проблемой, когда пришло время выходить из системы. Проблема: кнопка выхода из системы находится внутри фрагмента, и я хочу создать слушателя, посредством которого по завершении выхода процесс направляет меня обратно к основному действию
class PeopleFragment : Fragment() {
private lateinit var auth: FirebaseAuth
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_people, container, false)
auth = FirebaseAuth.getInstance()
view.apply {
signoutbutton.setOnClickListener {
FirebaseAuth.getInstance()
.signOut()
}
}
return view
}
}
Ниже файл Activity для Activity, который я намереваюсь направить:
class LogInActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(activity_log_in)
auth = FirebaseAuth.getInstance()
loginbutton.setOnClickListener {
doLogin()
}
tosignupTV.setOnClickListener {
startActivity(Intent(this, SignUpActivity::class.java))
finish()
}
}
private fun doLogin() {
if (loginEnail.text.toString().isEmpty()) {
loginEnail.error = "Please enter email"
loginEnail.requestFocus()
return
}
if (!Patterns.EMAIL_ADDRESS.matcher(loginEnail.text.toString()).matches()) {
loginEnail.error = "Please enter valid email"
loginEnail.requestFocus()
return
}
if (loginPassword.text.toString().isEmpty()) {
loginPassword.error = "Please enter password"
loginPassword.requestFocus()
return
}
auth.signInWithEmailAndPassword( loginEnail.text.toString(), loginPassword.text.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
val user = auth.currentUser
updateUI(user)
} else {
Toast.makeText(baseContext, "login failed.",
Toast.LENGTH_SHORT).show()
updateUI(null)
}
}
}
public override fun onStart() {
super.onStart()
// Check if user is signed in (non-null) and update UI accordingly.
val currentUser = auth.currentUser
updateUI(currentUser)
}
private fun updateUI(currentUser: FirebaseUser?){
if (currentUser != null) {
startActivity(Intent(this, MainActivity::class.java))
finish()
}else{
Toast.makeText(
baseContext, "Please verify your email address.",
Toast.LENGTH_SHORT
).show()
}
}
}
это код основного действия, содержащего все фрагменты:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val homefragment = HomeFragment()
val peoplefragment = PeopleFragment()
val myaccountfragment =MyAccountFragment()
makeCurrentFragment( homefragment)
navvbarr.setOnNavigationItemSelectedListener {
when(it.itemId) {
R.id.navigation_home ->makeCurrentFragment(homefragment)
R.id.navigation_people ->makeCurrentFragment(peoplefragment)
R.id.navigation_my_account ->makeCurrentFragment(myaccountfragment)
}
true
}
}
private fun makeCurrentFragment(fragment: Fragment) =
supportFragmentManager.beginTransaction().apply {
replace(R.id.fragment_layout, fragment)
commit()
}
}