Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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
Java 如何返回数组而不是任务?_Java_Android_Kotlin_Google Cloud Functions_Task - Fatal编程技术网

Java 如何返回数组而不是任务?

Java 如何返回数组而不是任务?,java,android,kotlin,google-cloud-functions,task,Java,Android,Kotlin,Google Cloud Functions,Task,在ActivitySignup中,我想调用createUser函数(从我的Firestore类)。我希望createUser将结果和消息返回到ActivitySignup。这将保持我的活动注册非常干净。我该怎么做 活动注册: class ActivitySignup : AppCompatActivity() { private lateinit var user: String private lateinit var userEditTxt: EditText pr

在ActivitySignup中,我想调用
createUser
函数(从我的Firestore类)。我希望
createUser
结果
消息
返回到ActivitySignup。这将保持我的活动注册非常干净。我该怎么做

活动注册:

class ActivitySignup : AppCompatActivity() {

    private lateinit var user: String
    private lateinit var userEditTxt: EditText
    private lateinit var email: String
    private lateinit var emailEditTxt: EditText
    private lateinit var password: String
    private lateinit var passwordEditTxt: EditText
    private lateinit var backbutton: Button
    private lateinit var terms: CheckBox
    private lateinit var submitbutton: Button
    private lateinit var auth: FirebaseAuth
    private lateinit var currentDateTime: DateTime
    private val tag: String = "ActivitySignup"
    private lateinit var functions: FirebaseFunctions
    private lateinit var fs: FS

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

        fs = FS()

        submitbutton = findViewById(R.id.btn_submit)

        submitbutton.setOnClickListener() {
            Log.e(tag,"Clicked submit")

            userEditTxt = findViewById(R.id.et_user)
            user = userEditTxt.text.toString().trim()
            emailEditTxt = findViewById(R.id.et_email)
            email = emailEditTxt.text.toString().trim()
            passwordEditTxt = findViewById(R.id.et_password)
            password = passwordEditTxt.text.toString().trim()

            if (user.isNotEmpty() && email.isNotEmpty() && password.isNotEmpty()) {
//                fs.createUser(user, email, password)
//                    .continueWith { task ->
//                        if (task.isSuccessful) {
//                            Log.e(tag, "createUser task succeeded")
////                            Log.e(tag, "Result1: ${task.result?.get("result")}") //case sensitive
////                            Log.e(tag, "Result2: ${task.result. ("message")}") //case sensitive
//
//                            val taskResult = task.result //.get("result")
//                            val result = taskResult.getData
//                            val message = task.result?.get("message")
//
//                            val intent = Intent(this, ActivityGroups::class.java)
//                            startActivity(intent)
//                            finish()
//                        } else {
//                            Log.e(tag, "createUser task failed")
//                        }
//                    }
                var returnResult = fs.createUser(user, email, password)
                Log.e(tag, "returnResult[0]: ${returnResult[0]}")
                Log.e(tag, "returnResult[1]: ${returnResult[1]}")
                //Code continues only if result = 1...


            }

        }

    }

}
fun createUser(user: String, email: String, password: String): Array<String> {
        Log.e(tag, "createUser()")
        val functions = Firebase.functions
        val auth = Firebase.auth
        var result: String
        var message: String

        auth.createUserWithEmailAndPassword(email, password)
            .continueWith() { task ->
                if (task.isSuccessful) {
                    Log.e(tag, "auth.createUserWithEmailAndPassword() successful")

                    var data = hashMapOf<String, String>()
                    data["user"] = user
                    data["email"] = email

                    functions.getHttpsCallable("createUser").call(data)
                        .continueWith() { task ->
                            if (task.isSuccessful) {
                                Log.e(tag, "CF_createUser task was successful")
                                Log.e(tag, "CF_createUser: ${task.result?.data.toString()}")
                                var returnData = task.result?.data.toString()
                                result = returnData[0].toString()
                                message = returnData[1].toString()
                                
                            } else {
                                Log.e(tag, "CF_createUser task failed")
                                Log.e(tag, "CF_createUser exception message: ${task.exception?.message}")
                                Log.e(tag, "CF_createUser exception localizedMessage: ${task.exception?.localizedMessage}")
                            }
                        }
                } else {
                    Log.e(tag, "auth.createUserWithEmailAndPassword() failed")
                    Log.e(tag, "authTask exception: ${task.exception.toString()}")
                }

            }
        return arrayOf(result, message)
    }
FS.createUser():

class ActivitySignup : AppCompatActivity() {

    private lateinit var user: String
    private lateinit var userEditTxt: EditText
    private lateinit var email: String
    private lateinit var emailEditTxt: EditText
    private lateinit var password: String
    private lateinit var passwordEditTxt: EditText
    private lateinit var backbutton: Button
    private lateinit var terms: CheckBox
    private lateinit var submitbutton: Button
    private lateinit var auth: FirebaseAuth
    private lateinit var currentDateTime: DateTime
    private val tag: String = "ActivitySignup"
    private lateinit var functions: FirebaseFunctions
    private lateinit var fs: FS

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

        fs = FS()

        submitbutton = findViewById(R.id.btn_submit)

        submitbutton.setOnClickListener() {
            Log.e(tag,"Clicked submit")

            userEditTxt = findViewById(R.id.et_user)
            user = userEditTxt.text.toString().trim()
            emailEditTxt = findViewById(R.id.et_email)
            email = emailEditTxt.text.toString().trim()
            passwordEditTxt = findViewById(R.id.et_password)
            password = passwordEditTxt.text.toString().trim()

            if (user.isNotEmpty() && email.isNotEmpty() && password.isNotEmpty()) {
//                fs.createUser(user, email, password)
//                    .continueWith { task ->
//                        if (task.isSuccessful) {
//                            Log.e(tag, "createUser task succeeded")
////                            Log.e(tag, "Result1: ${task.result?.get("result")}") //case sensitive
////                            Log.e(tag, "Result2: ${task.result. ("message")}") //case sensitive
//
//                            val taskResult = task.result //.get("result")
//                            val result = taskResult.getData
//                            val message = task.result?.get("message")
//
//                            val intent = Intent(this, ActivityGroups::class.java)
//                            startActivity(intent)
//                            finish()
//                        } else {
//                            Log.e(tag, "createUser task failed")
//                        }
//                    }
                var returnResult = fs.createUser(user, email, password)
                Log.e(tag, "returnResult[0]: ${returnResult[0]}")
                Log.e(tag, "returnResult[1]: ${returnResult[1]}")
                //Code continues only if result = 1...


            }

        }

    }

}
fun createUser(user: String, email: String, password: String): Array<String> {
        Log.e(tag, "createUser()")
        val functions = Firebase.functions
        val auth = Firebase.auth
        var result: String
        var message: String

        auth.createUserWithEmailAndPassword(email, password)
            .continueWith() { task ->
                if (task.isSuccessful) {
                    Log.e(tag, "auth.createUserWithEmailAndPassword() successful")

                    var data = hashMapOf<String, String>()
                    data["user"] = user
                    data["email"] = email

                    functions.getHttpsCallable("createUser").call(data)
                        .continueWith() { task ->
                            if (task.isSuccessful) {
                                Log.e(tag, "CF_createUser task was successful")
                                Log.e(tag, "CF_createUser: ${task.result?.data.toString()}")
                                var returnData = task.result?.data.toString()
                                result = returnData[0].toString()
                                message = returnData[1].toString()
                                
                            } else {
                                Log.e(tag, "CF_createUser task failed")
                                Log.e(tag, "CF_createUser exception message: ${task.exception?.message}")
                                Log.e(tag, "CF_createUser exception localizedMessage: ${task.exception?.localizedMessage}")
                            }
                        }
                } else {
                    Log.e(tag, "auth.createUserWithEmailAndPassword() failed")
                    Log.e(tag, "authTask exception: ${task.exception.toString()}")
                }

            }
        return arrayOf(result, message)
    }
fun createUser(用户:字符串、电子邮件:字符串、密码:字符串):数组{
Log.e(标记“createUser()”)
val functions=Firebase.functions
val auth=Firebase.auth
变量结果:字符串
var消息:字符串
auth.createUserWithEmailAndPassword(电子邮件,密码)
.continueWith(){task->
如果(任务成功){
Log.e(标记“auth.createUserWithEmailAndPassword()成功”)
var data=hashMapOf()
数据[“用户”]=用户
数据[“电子邮件”]=电子邮件
functions.getHttpScalable(“createUser”).call(数据)
.continueWith(){task->
如果(任务成功){
Log.e(标记“CF_createUser任务成功”)
Log.e(标记“CF_createUser:${task.result?.data.toString()}”)
var returnData=task.result?.data.toString()
结果=返回数据[0]。toString()
message=returnData[1].toString()
}否则{
Log.e(标记“CF_createUser任务失败”)
Log.e(标记“CF_createUser异常消息:${task.exception?.message}”)
Log.e(标记“CF_createUser exception localizedMessage:${task.exception?.localizedMessage}”)
}
}
}否则{
Log.e(标记“auth.createUserWithEmailAndPassword()失败”)
Log.e(标记“authTask异常:${task.exception.toString()}”)
}
}
返回数组(结果、消息)
}

如果您看看这里:

val functions = Firebase.functions
val auth = Firebase.auth
var result: String
var message: String
与函数和身份验证不同,结果和消息不是用值初始化的(即,它们没有值)。可以使用如下初始值初始化它们:

var result: String = ""
var message: String = ""
lateinit var result: String
lateinit var message: String
或者他们是这样的:

var result: String = ""
var message: String = ""
lateinit var result: String
lateinit var message: String
这意味着这些变量将在代码处理时获得一个值

最新一期的最新情况:

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                //Call your cloud function here
                //If Cloud functions returns desired response, proceed
                return arrayOf(result, message)
            }
        }

如果你看看这里:

val functions = Firebase.functions
val auth = Firebase.auth
var result: String
var message: String
与函数和身份验证不同,结果和消息不是用值初始化的(即,它们没有值)。可以使用如下初始值初始化它们:

var result: String = ""
var message: String = ""
lateinit var result: String
lateinit var message: String
或者他们是这样的:

var result: String = ""
var message: String = ""
lateinit var result: String
lateinit var message: String
这意味着这些变量将在代码处理时获得一个值

最新一期的最新情况:

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                //Call your cloud function here
                //If Cloud functions returns desired response, proceed
                return arrayOf(result, message)
            }
        }

您得到的错误是不言自明的,因为您没有给result参数任何初始值。您可以采取的另一个操作是将回调方法传递给createUser函数,并使其接受两个参数,result和message。@我应该提到,我是初学者。我不确定我是否理解你的建议。你得到的错误是不言自明的,因为你没有给结果参数任何初始值。您可以采取的另一个操作是将回调方法传递给createUser函数,并使其接受两个参数,result和message。@我应该提到,我是初学者。不确定我是否理解您的建议。如果我使用您的第一种方法,
FS.createUser()
将空字符串传回ActivitySignup,但这是不对的,因为它应该传回
result=“1”
。我的问题基本上是关于范围的。如何使用任务填充变量,然后将该变量传递回ActivitySignup?您只需在返回中添加
1
,您应该能够调整他的建议,不是吗?为了澄清,
1
不是此过程的标准返回类型。@DIGIByte我想返回
result
message
,它们来自后端的云函数。我不想硬编码1,我想用Email和Password运行auth.createUsers,如果成功,则运行createUser云函数,该函数返回
结果
消息
。我希望将这些值(无论它们是什么)添加到ActivitySignup中,以便ActivitySignup上的代码非常干净。成功创建时没有结果或消息,它只是让您登录。它只在上返回一条消息failure@DIGIByte
结果
消息
来自自定义后端云函数。如果auth.createUserWithEmailAndPassword成功->运行自定义后端云函数,该函数返回
result
message
->如果
result=1
…代码的其余部分。如果我使用第一种方法,
FS.createUser()
将空字符串传回ActivitySignup,但这是不对的,因为它应该传回
result=“1”
。我的问题基本上是关于范围的。如何使用任务填充变量,然后将该变量传递回ActivitySignup?您只需在返回中添加
1
,您应该能够调整他的建议,不是吗?为了澄清,
1
不是此过程的标准返回类型。@DIGIByte我想返回
result
message
,它们来自后端的云函数。我不想硬编码1,我想用Email和Password运行auth.createUsers,如果成功,则运行createUser云函数,该函数返回
结果
消息
。我希望将这些值(无论它们是什么)添加到ActivitySignup中,以便ActivitySignup上的代码非常干净。成功创建时没有结果或消息,它只是让您登录。它只会回来