Androidx活动OnBackPressedCallback接口问题

时间:2019-03-14 23:16:54

标签: android android-activity androidx android-ktx

implementation("androidx.core:core-ktx:1.1.0-alpha04")
implementation ("androidx.appcompat:appcompat:1.0.2")
implementation ("androidx.activity:activity-ktx:1.0.0-alpha05")

我也在看这个Why are their 2 different ComponentActivity classes? 我已设置此库,并希望使用 OnBackPressedCallback

import android.os.Bundle
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment

open class BaseNiceFragment : Fragment(), OnBackPressedCallback {

    override fun handleOnBackPressed(): Boolean {
       // do some nice things here
       return true
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
       super.onActivityCreated(savedInstanceState)
       activity!!.addOnBackPressedCallback(viewLifecycleOwner, this)
    }

    override fun onDestroyView() {
       super.onDestroyView()
       activity!!.removeOnBackPressedCallback(this)
    }

    protected open fun handleEmptyView(isListEmpty: Boolean) {} 
}

它可以与Android Studio的调试版本配合使用,但是每当我尝试进行app:compileFullReleaseKotlin时,我都会遇到以下问题

BaseNiceFragment.kt: (_, _): Unresolved reference: OnBackPressedCallback

任何人或Ian都知道如何确保将其包含在我的所有版本中

public interface OnBackPressedCallback {
 //...
}

2 个答案:

答案 0 :(得分:11)

您正在将稳定版本(取决于它的appcompat:1.0.2fragment:1.0.0)与alpha版本混合在一起。 1.1.0的仅片段FragmentActivity alpha版本取决于androidx.activity的{​​{1}},因此包含ComponentActivity方法。

您需要专门包含addOnBackPressedCallback或将您的AppCompat依赖项切换为androidx.fragment:fragment:1.1.0-alpha05(可传递依赖于片段androidx.appcompat:appcompat:1.1.0-alpha03)。

答案 1 :(得分:1)

据了解,这就是我所需要的,而不是将其他依赖项作为最高答案androidx.appcompat:appcompat:1.1.0-beta01