【问题标题】:Call Fragment as an Activity in Android在 Android 中将 Fragment 作为 Activity 调用
【发布时间】:2021-03-20 11:03:29
【问题描述】:

我有这个需要活动的方法,但我想将它与片段一起使用,但它给我一个错误“不兼容的类型”

fun loadUserData(activity: Activity) {
    mFireStore.collection(Constants.USERS).document(getCurrentUserID()).get()
        .addOnSuccessListener { document ->
            Log.e(activity.javaClass.simpleName, document.toString())

            val loggedInUser = document.toObject(User::class.java)!!

            when (activity) {
                is LogIn -> {
                    activity.signInSuccess(loggedInUser)
                }
                is  NavigationHomePage->{
                    activity.updateHomeUserHomeScreen(loggedInUser)
                }
            }
        }
        .addOnFailureListener { e ->
            Log.e(
                activity.javaClass.simpleName,
                "Error while getting loggedIn user details", e
            )
        }
}

NavigationHomePage 是片段.. 那么如何准确地做到这一点

【问题讨论】:

    标签: android kotlin android-fragments android-activity


    【解决方案1】:

    使用 requireActivity()

    fun loadUserData() {
        mFireStore.collection(Constants.USERS).document(getCurrentUserID()).get()
            .addOnSuccessListener { document ->
                Log.e(requireActivity().javaClass.simpleName, document.toString())
    
                val loggedInUser = document.toObject(User::class.java)!!
    
                when (requireActivity()) {
                    is LogIn -> {
                        requireActivity().signInSuccess(loggedInUser)
                    }
                    is  NavigationHomePage->{
                        requireActivity().updateHomeUserHomeScreen(loggedInUser)
                    }
                }
            }
            .addOnFailureListener { e ->
                Log.e(
                    requireActivity().javaClass.simpleName,
                    "Error while getting loggedIn user details", e
                )
            }
    }
    

    【讨论】:

    • requireActivity() 不起作用,它无法识别它...
    • 方法 loadUserData 在我用于所有 firebase 函数的基类中
    • 你从哪里调用函数?片段还是活动?
    • 我从活动和片段中调用它,它不会从那里给出任何错误,但是因为函数本身需要传递一个活动,所以它在基类中给出了一个错误。 ..那么我怎样才能将片段传递给函数而不是活动而不出现错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多