Android 如何在没有onAttach(上下文)的情况下初始化OnFragmentInteractionListener以用于FirebaseUI
我正在尝试使我的应用程序(使用com.firebase.ui和com.firebase.ui.auth)在旧的api级别15(4.0.4)设备上工作。首先,我使用manifest标记: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
<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(活动)
不会自动调用newonAttach(上下文)
因此,为了支持所有版本的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(活动)
不会自动调用newonAttach(上下文)
因此,为了支持所有版本的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();
}
}