我已经将SDK更新到最新版本(API 23),onAttach(Activity)
不建议使用分段方法。因此,我现在使用的不是使用该方法,onAttach(Context)
而是在生命周期中不调用此方法。该活动是AppCompatActivity
v7的实例,而该片段是Fragment(android.app.Fragment
)类的实例。
有任何想法如何使onAttach
API 23正常工作吗?
解
我找到了一些可以帮助您理解和解决此问题的答案:
解决方案:
使用getSupportFragmentManager()将强制您使用支持库中的片段。因此,第一个解决方案是用support lib中的片段替换所有片段,并使用getSupportFragmentManager()。
我已经实现的解决方案是处理2种可能性(1.该应用程序在API <23的设备上运行,该应用程序在API> = 23的设备上运行)。
不久,在我的实现中,我为项目中的所有片段提供了一个基类,并在其中添加了以下代码:
/*
* onAttach(Context) is not called on pre API 23 versions of Android and onAttach(Activity) is deprecated
* Use onAttachToContext instead
*/
@TargetApi(23)
@Override
public final void onAttach(Context context) {
super.onAttach(context);
onAttachToContext(context);
}
/*
* Deprecated on API 23
* Use onAttachToContext instead
*/
@SuppressWarnings("deprecation")
@Override
public final void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
onAttachToContext(activity);
}
}
/*
* Called when the fragment attaches to the context
*/
protected void onAttachToContext(Context context) {
}
现在,我仅在需要此操作的所有片段上重写onAttachToContext(Context)方法。
@Override
你的onAttach(Context)
?如果没有,请添加它。如果随后出现抱怨没有该错误的编译器错误onAttach(Context)
,请确保您使用的是v23appcompat-v7
。