Проблема в следующем шаблоне MVVM - PullRequest
0 голосов
/ 23 декабря 2019

Я хочу изучить шаблон 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}

    }

}
...