Android 如何在没有onAttach(上下文)的情况下初始化OnFragmentInteractionListener以用于FirebaseUI

Android 如何在没有onAttach(上下文)的情况下初始化OnFragmentInteractionListener以用于FirebaseUI,android,firebase,firebaseui,Android,Firebase,Firebaseui,我正在尝试使我的应用程序(使用com.firebase.ui和com.firebase.ui.auth)在旧的api级别15(4.0.4)设备上工作。首先,我使用manifest标记: <uses-sdk tools:overrideLibrary="com.firebase.ui, com.firebase.ui.auth"/> 但在具有M个方法的设备上,这两种方法都运行,但setmListener仅按预期调用一次: D/StSt_MaxWListFrag: onAttach

我正在尝试使我的应用程序(使用com.firebase.ui和com.firebase.ui.auth)在旧的api级别15(4.0.4)设备上工作。首先,我使用manifest标记:

 <uses-sdk tools:overrideLibrary="com.firebase.ui, com.firebase.ui.auth"/> 
但在具有M个方法的设备上,这两种方法都运行,但setmListener仅按预期调用一次:

D/StSt_MaxWListFrag: onAttach Context 1 
D/StSt_MaxWListFrag: onAttach Activity 1A 
D/StSt_MaxWListFrag: setmListener 1  
到目前为止,它似乎在工作,到目前为止没有问题。我只是想知道我是否缺少了一些东西——这种方法是否会让我头疼,或者是不好的做法——也许效率低下? 谢谢你的洞察力

正如您在中所看到的,
onAttach(Activity)
从API 23以上被弃用,而是使用了
onAttach(Context)
onAttach(活动)
不会自动调用new
onAttach(上下文)

因此,为了支持所有版本的API并只执行一次附加操作,您必须分离函数中的附加逻辑,并从执行检查的两个回调调用该函数:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    attached();
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        attached();
    }
}
@覆盖
公共void-onAttach(上下文){
super.onAttach(上下文);
附();
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
if(Build.VERSION.SDK_INT
正如您在中所看到的,
onAttach(活动)
从API 23以上被弃用,而是使用了
onAttach(上下文)
onAttach(活动)
不会自动调用new
onAttach(上下文)

因此,为了支持所有版本的API并只执行一次附加操作,您必须分离函数中的附加逻辑,并从执行检查的两个回调调用该函数:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    attached();
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        attached();
    }
}
@覆盖
公共void-onAttach(上下文){
super.onAttach(上下文);
附();
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
if(Build.VERSION.SDK_INT
我不是这样做的吗?你是说我什么都没错过?除了你的代码更干净,只有一个if语句。是的,我最终确认了你的想法。这不是我所做的吗?你是说我什么都没错过?除了你的代码更干净,只有一个if语句。是的,我最终证实了你的想法。
@Override
public void onAttach(Context context) {
    super.onAttach(context);
    attached();
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        attached();
    }
}