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
如何在Kotlin中将一个值从一个函数传递到另一个函数?_Kotlin - Fatal编程技术网

如何在Kotlin中将一个值从一个函数传递到另一个函数?

如何在Kotlin中将一个值从一个函数传递到另一个函数?,kotlin,Kotlin,你好 所以,我的问题是在一个名为showAuth()的函数中有两个字符串值,我需要在另一个名为setup()的函数中调用它们两个函数位于同一活动文件中。我该怎么做 谢谢,如果这是个愚蠢的问题,我很抱歉,我是新来的^^ createActivity class createActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInst

你好

所以,我的问题是在一个名为
showAuth()
的函数中有两个字符串值,我需要在另一个名为
setup()
的函数中调用它们两个函数位于同一活动文件中。我该怎么做

谢谢,如果这是个愚蠢的问题,我很抱歉,我是新来的^^

createActivity

class createActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_create)

    setup() //<---- this one says "No value passed for parameter 'email'"
}
showAuth()


private-fun-showAuth(email:String,provider:ProviderType){/问题出在setup()函数中。请从setup()方法中删除这两个参数“email:String,provider:ProviderType”。应该是这样的

private fun setup(){

iniciarSesionButton.setOnClickListener{
    if (inputEmail.text.isNotEmpty() && inputContraseña.text.isNotEmpty()){

        FirebaseAuth.getInstance().createUserWithEmailAndPassword(inputEmail.text.text.oString(), inputContraseña.text.toString()) .addOnCompleteListener {
            val db = FirebaseFirestore.getInstance()
            db.collection("users").document(email).set(
                hashMapOf("provider" to provider, "username" to inputUsername.text.toString())
           )
            if(it.isSuccessful){
                showAuth(it.result?.user?.email ?: "", ProviderType.Email)
            }
            else{
                showError()
            }
        }
    }
}}

setup
定义为具有两个参数,即
fun setup(valueA:String,valueB:String)
,在
showAuth
中,调用
setup
时会传递值,例如
setup(firstValue,secondValue)
。或者,在类中创建两个字符串属性。
showAuth
可以设置这些属性的值,并且
setup
可以引用它们。使用Kotlin命名约定。现在可以了吗?您好!!感谢您的快速回复!我正在测试它,但是当我在createActivity上调用setup()时,它显示setup()没有得到这两个字符串。“它说setup()没有得到这两个字符串”这个短语毫无意义,你是什么意思?你能展示一下你的代码是什么样子吗?我编辑了这篇文章,它就在上面。另外,在createActivity上,我做了一个评论。这样做不会将这两个字符串传递给setup()是的,您正在根据代码从setup()方法中的edittext字段(“inputEmail.text.isNotEmpty()&&inputContraseña.text.isNotEmpty()”)中获取这两个字符串。那么为什么需要传递这些字符串呢?如果问题已解决,请接受此答案。
   private fun showAuth(email: String, provider: ProviderType){   //<-- 
    val authIntent = Intent(this, AuthActivity::class.java).apply {
        putExtra("email",email)
        putExtra("provider",provider.name)
        setup(email,provider)
    }
    startActivity(authIntent)
}
     fun showAuth( ){
        
        setup("v1", "v2")
    }


    fun setup(  valueOne :  String,valueTwo : String){
    }
private fun setup(){

iniciarSesionButton.setOnClickListener{
    if (inputEmail.text.isNotEmpty() && inputContraseña.text.isNotEmpty()){

        FirebaseAuth.getInstance().createUserWithEmailAndPassword(inputEmail.text.text.oString(), inputContraseña.text.toString()) .addOnCompleteListener {
            val db = FirebaseFirestore.getInstance()
            db.collection("users").document(email).set(
                hashMapOf("provider" to provider, "username" to inputUsername.text.toString())
           )
            if(it.isSuccessful){
                showAuth(it.result?.user?.email ?: "", ProviderType.Email)
            }
            else{
                showError()
            }
        }
    }
}}