gpt4 book ai didi

android - Kotlin - 从对象调用类方法

转载 作者:行者123 更新时间:2023-11-29 14:34:44 26 4
gpt4 key购买 nike

将尽量保持简洁......

我想在我的 MainActivty 类中有一个方法,比如 updateUI()。

我有另一个文件,它是一个名为 FBManager 的对象。该对象本质上拥有“静态”firebase 访问方法..比方说 signInUser()

从我调用 FBManager.signInUser() 的 Activity ...它执行一些逻辑并通过 2 个私有(private)方法移动,在最后一个私有(private)方法中,我想本质上调用 MainActivity.updateUI()...

这无法完成,因为 kotlin 没有静态方法并且无法使 updateUI() 成为静态的。 MainActivity().updateUI() 编译但不正确并且不想实例化新的 MainActivity。最后,我想将 Activity 传递给第一个构造函数,如 FBManager.signInUser(this)...但是在 signInUser() 之后,它进入了一个覆盖方法,该方法只能将包作为可选输入(我不相信你可以将 Activity 放入一个包中),因此我无法将 Activity 引用传递给最终的私有(private)方法......

编辑:进一步阐述

object FBManager {

fun signInUser() {
// Create intent
startActivityForResult(intent)
}

override fun onActivityResult(some intent stuff) {
//Try catch block. In try block call
firebaseAuth(Google account)
}

fun firebaseAuth(acct: GoogleSignInAccount) {
//More logic and an .onCompleteListener

// Inside .onCompeteListener, which is the problem....
MainActivity.updateUI()
}
}

抱歉布局......正在我的手机上打字......

-结束编辑-

我希望所有这些都是有意义的,因为我是编程新手并且发现很难解释我的问题(因为如果我真正理解它们我可以想出一个解决方案..)

那么根据标题,有没有其他方法可以做到这一点...从对象 FBManager 调用 MainActivity 中的方法?

最佳答案

这个例子呢? Activity

class ExampleActivity : AppCompatActivity() {

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

FBManager.signInUser {
updateUI()
}
}

private fun updateUI() {
// update UI
}
}

和 FBManager 对象

object FBManager {
fun signInUser(callback: () -> Unit) {
// do work and then
callback()
}
}

关于android - Kotlin - 从对象调用类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com