我想从xml布局中向RoboFragment注入(inject)一些 View ,但是不幸的是我遇到了Nullpointer Exception。由于RoboGuice(除了是一个出色的DI框架)几乎没有文档,因此我不知道是否可以使用@ContentView(R.layout.fragmentlayout)
注释我的RoboFragment。我应该做些什么吗?我目前正在做的是:
public class TestFragment extends RoboFragment {
@InjectView(R.id.upBtn) private Button upBtn;
@Override
public View onCreateView(LayoutInflater layoutInflater,
ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(layoutInflater, container, savedInstanceState);
View view = layoutInflater.inflate(R.layout.fragmentlayout, container, false);
RoboGuice.getInjector(getActivity()).injectMembers(this);
upBtn.setSelected(false); // <------ Null pointer here
return view;
}
}
最佳答案
如果您查看RoboFragment的来源,您会看到
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
RoboGuice.getInjector(getActivity()).injectViewMembers(this);
}
如果您坚持手动注入(inject),请使用
injectViewMembers()
。如果您可以推迟触摸 View 直到onViewCreated()
之后,那么将为您设置 View 。关于android - RoboFragment中的InjectView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14210526/