嗨我有一个问题,我的同事经常忘记对我广泛使用的通用互联网错误片段实施回调。我有一个问题,我们只发现一个类在我们唤起片段时遗漏了它。 I.E.应用程序神秘地崩溃,我们浪费时间查找原因。
如果没有实施custom lint for android,我如何强迫开发人员实施回调?这是一个简单的片段,只显示文本而不带参数。
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mNoInternetCallbackInterface = (NoInternetCallbackInterface) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onStart(){
super.onStart();
try {
mNoInternetCallbackInterface = (NoInternetCallbackInterface) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mNoInternetCallbackInterface = null;
}
在活动中引用。 (是的,我知道我应该使用创建实例函数,但不会解决此问题)
@Override
public void onError(final Throwable e) {
FragmentManager fragmentManager = getSupportFragmentManager();
NoInternetDialogFragment mNoInternetDialogFragment = new NoInternetDialogFragment();
try {
mNoInternetDialogFragment.show(fragmentManager, "no_internet");
} catch (IllegalStateException ie) {
// ignore as this code is going away.
}
}
答案 0 :(得分:3)
您可以在父片段中放置任何必要的内容,并使其他片段扩展父片段。我们可以添加抽象方法来强制用户实现它。
abstract public class ParentFragment extends Fragment {
//put anything needs to be inherited in this class
public void onError(final Throwable e) {
FragmentManager fragmentManager = getSupportFragmentManager();
NoInternetDialogFragment noInternetDialogFragment = new NoInternetDialogFragment();
try {
mNoInternetDialogFragment.show(fragmentManager, "no_internet");
onErrorHandle(fragmentManager, noInternetDialogFragment);
} catch (IllegalStateException ie) {
// ignore as this code is going away.
}
}
abstract protect void onErrorHandle(FragmentManager e, NoInternetDialogFragment fragment);
}
这是儿童片段:
public class ChildFragment extends ParentFragment {
void onErrorHandle(FragmentManager e, NoInternetDialogFragment fragment) {//your code}
}
所以它的ParentFragment将处理这个案例。