我想从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/

10-09 13:25