Я хочу изучить шаблон MVVM, будучи новичком. Я попытался реализовать аутентификацию с использованием Firebase, следуя шаблону MVVM, сборка gradle успешно, так же как и приложение, запущенное без сбоев, но функционирование входа в систему и регистрации не было успешным. Это также следует за привязкой данных. Код приведен ниже:
Viewmodel
package com.karuneshpalekar.firebaseauthmvvm
import android.util.Log
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.google.firebase.auth.FirebaseAuth
class Viewmodel : ViewModel() {
val useremail = MutableLiveData<String>()
val userpassword = MutableLiveData<String>()
private val firebaseAuth: FirebaseAuth by lazy {
FirebaseAuth.getInstance()
}
fun login(){
firebaseAuth.signInWithEmailAndPassword(useremail.value.toString(),userpassword.value.toString()).addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.i("Info", firebaseAuth.currentUser.toString())
} else {
Log.e("unsuccessful", "Error")
}
}
}
fun register() {
firebaseAuth.createUserWithEmailAndPassword(useremail.value.toString(),userpassword.value.toString()).addOnCompleteListener { task ->
if (task.isSuccessful){
Log.i("Info", firebaseAuth.currentUser.toString())
//Redirect to main activity
}
else {
Log.e("unsuccessful", "Error")
}
}
}
}
Основная деятельность
package com.karuneshpalekar.firebaseauthmvvm
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProviders
import com.karuneshpalekar.firebaseauthmvvm.databinding.ActivityMainBinding
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mainviewModel = ViewModelProviders.of(this).get(Viewmodel::class.java)
DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main).apply { this.setLifecycleOwner (this@MainActivity)
this.viewmodel = mainviewModel }
loginreg.setOnClickListener {
val intent = Intent(this,Registration::class.java)
startActivity(intent)
}
}
}
Регистрация
package com.karuneshpalekar.firebaseauthmvvm
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProviders
import com.karuneshpalekar.firebaseauthmvvm.databinding.ActivityRegistrationBinding
class Registration : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_registration)
val mainviewModel = ViewModelProviders.of(this).get(Viewmodel::class.java)
DataBindingUtil.setContentView<ActivityRegistrationBinding>(this,R.layout.activity_registration).apply { this.setLifecycleOwner ( this@Registration)
this.viewmodel = mainviewModel}
}
}