我需要在屏幕上显示一个片段。我希望能够使用InjectView注入(inject)我的UI元素。 InjectView在 Activity 上效果很好,因为 View (xml)是在onCreate期间设置的,但是在片段上, View 是在onCreatView设置的。

那么有没有办法在片段上使用InjectView?我知道我可以使用findViewbyId查找每个元素,但是我更喜欢使用InjectView

public class ProfileFragment extends RoboDialogFragment {

    @InjectView(R.id.commentEditText)
    protected EditText commentEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

            // I get a  null pointer exception here
            commentEditText.setText("Some comment");

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.profile , container, false);

            // I get a  null pointer exception here
        commentEditText.setText("Some comment");

        return view;
    }

}

最佳答案

注入(inject)发生在onViewCreated期间

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    commentEditText.setText("Some comment");
}

09-12 13:40