Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓应用程序:为什么不是';我的更新密码不起作用吗?_Android_Kotlin_Firebase Authentication - Fatal编程技术网

Android 安卓应用程序:为什么不是';我的更新密码不起作用吗?

Android 安卓应用程序:为什么不是';我的更新密码不起作用吗?,android,kotlin,firebase-authentication,Android,Kotlin,Firebase Authentication,我有我的登录活动,但我似乎无法更新用户的密码后登录。当我这样做时,它会给出密码。我认为问题可能在于currentUser变量没有在这个脚本中定义,但我不确定,因为我对Android开发相当陌生 package com.example.testapp import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.text.TextUtils import android.widget

我有我的登录活动,但我似乎无法更新用户的密码后登录。当我这样做时,它会给出密码。我认为问题可能在于
currentUser
变量没有在这个脚本中定义,但我不确定,因为我对Android开发相当陌生

package com.example.testapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.TextUtils
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.auth.FirebaseAuth

class UpdatePassword : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    private lateinit var passwordEt: EditText

    private lateinit var changePasswordBtn: Button
    private lateinit var back: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_update_password)

        auth = FirebaseAuth.getInstance()

        passwordEt = findViewById(R.id.password_edt_text)

        changePasswordBtn = findViewById(R.id.reset_pass_btn)
        back = findViewById(R.id.back_btn)

        back.setOnClickListener{
            finish()
        }

        changePasswordBtn.setOnClickListener{
            var password: String = passwordEt.text.toString()
            if (TextUtils.isEmpty(password)) {
                Toast.makeText(this, "Please enter password", Toast.LENGTH_LONG).show()
            } else {
                auth.currentUser?.updatePassword(password)
                    ?.addOnCompleteListener(this, OnCompleteListener { task ->
                        if (task.isSuccessful) {
                            Toast.makeText(this, "Password changes successfully", Toast.LENGTH_LONG)
                                .show()
                            finish()
                        } else {
                            Toast.makeText(this, "password not changed", Toast.LENGTH_LONG)
                                .show()
                        }
                    })
            }
        }
    }
}

当任务失败时,您可以检查异常以找出失败的原因。我建议记录它:

auth.currentUser?.updatePassword(password)
    ?.addOnCompleteListener(this, OnCompleteListener { task ->
        if (task.isSuccessful) {
            Toast.makeText(this, "Password changes successfully", Toast.LENGTH_LONG).show()
            finish()
        } else {
            Log.e("updatePassword", "error", task.exception)
            Toast.makeText(this, "password not changed", Toast.LENGTH_LONG).show()
        }
    })

这会在“异常”下面显示错误:类型推断失败。预期类型不匹配:必需:字符串!发现:异常?“异常?”是红色的。啊,看起来
e
需要3个参数。更新了,但我也强烈建议您在遇到这样的错误时阅读,以查看方法需要哪些参数。实际上,我将该行更改为
Log.e(“updatePassword”,task.getException().toString())
,它起了作用(某种程度上)。在发表了那篇评论后,我开始对它进行修补。谢谢