我有一个扩展父片段(NavMenu)的片段(NavMenuStats)。
这个父片段会覆盖onCreateView方法,如下所示:
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (some condition) {
View view = ...
// Do stuff and return view. Everything works well
return view;
} else {
return null; // since @Nullable
}
}
但是当我在继承这个片段的类上使用AndroidAnnotations时,"某些条件"是错误的,它不会返回视图。一切都只是空白,而@AfterViews甚至没有被召唤。
我也尝试过,而不是返回null,以:
...
} else {
return super.onCreateView(inflater, container, savedInstanceState);
}
我知道我必须让AndroidAnnotations处理布局膨胀,如下所述: androidannotations @AfterViews is not calling and editText is null
这就是为什么我在父片段的onCreateView()中返回null或super方法。
我错过了什么?有什么想法吗?
非常感谢。
答案 0 :(得分:1)
如果没有您的NavMenuStats代码,很难回答,但我认为您的问题就在那里。
我认为你已经在你的NavMenuStats中添加了onCreateView
方法,所以你要阻止AndroidAnnotations为你编写它。
尝试通过onCreateView
带注释的类删除完整的@EFragment
方法。
这种情况有效:
MainFragment
public class MainFragment extends Fragment{
public boolean nullView = false;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return nullView ? null : inflater.inflate(R.layout.fragment_main, container, false);
}
}
SonFragment
@EFragment(R.layout.fragment_son)
public class SonFragment extends MainFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.nullView = true;
}
}
也许你忘了在最后用_添加生成的子片段?