这个onAttach方法崩溃我的android应用程序,我想知道这个方法的相关性以及如果我完全删除该方法会发生什么
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
我将其删除,我的代码运行顺利,希望将来不会出现任何问题。
答案 0 :(得分:1)
以下是问题context instanceof OnFragmentInteractionListener
Fragment comunication Android docs.
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
答案 1 :(得分:0)
当在两者之间需要通信时,此代码是用于处理活动中的片段的documentation's way。我提到它是文档的方式,因为它不是唯一的方法(您可以使用其他技术,例如发布/订阅引擎,例如EventBus)。
如果片段附加到的活动没有实现片段期望附加到的接口,则此代码故意抛出RunTimeException。如果它确实实现了 - 活动将保存为该接口类型的指针(在您的情况下为OnFragmentInteractionListener
)。
您可以看到抛出异常的行:
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
所以,如果你有在控制台"必须实现OnFragmentInteractionListener" - 你知道片段附加到应该实现OnFragmentInteractionListener的活动但是没有。