Android NullPointerException:片段类中的SetOnClickListener

Android NullPointerException:片段类中的SetOnClickListener,android,fragment,Android,Fragment,在Fragment类中为ImageView添加setOnClickListener时,我遇到了一个问题。由于NullPointerException,当我单击ImageView时发生错误 下面是我的代码: public final class TestFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedIn

在Fragment类中为ImageView添加setOnClickListener时,我遇到了一个问题。由于NullPointerException,当我单击ImageView时发生错误

下面是我的代码:

public final class TestFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ImageView image = new ImageView(getActivity());
    image.setTag(mContent);
    image.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        HomeActivity h = new HomeActivity();
        String url = h.getEventUrl();

        Intent childClass = new Intent(getActivity(), HomeEventDetailActivity.class);

        childClass.putExtra("eventUrl",url);
        TabGroupActivity parentActivity = (TabGroupActivity)h.getParent();
        parentActivity.startChildActivity("Child_Main1", childClass);
    }
});
    imageManager.displayImage(mContent, image, R.drawable.icon);
    image.setScaleType(ScaleType.FIT_XY);

    LinearLayout layout = new LinearLayout(getActivity());
    layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    layout.setGravity(Gravity.CENTER);
    layout.addView(image);

    return layout;
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString(KEY_CONTENT, mContent);

    setUserVisibleHint(true);
}
}

请帮忙

我认为问题出现在这一行:

ImageView image = new ImageView(getActivity());
尝试传递在onCreateView方法末尾返回的布局变量,而不是将碎片主机活动作为参数(通过getActivity()传递给此构造函数)

ImageView image = new ImageView(layout);
代码如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);

ImageView image = new ImageView(layout);
image.setTag(mContent);
image.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
    HomeActivity h = new HomeActivity();
    String url = h.getEventUrl();

    Intent childClass = new Intent(getActivity(), HomeEventDetailActivity.class);

    childClass.putExtra("eventUrl",url);
    TabGroupActivity parentActivity = (TabGroupActivity)h.getParent();
    parentActivity.startChildActivity("Child_Main1", childClass);
}
});
imageManager.displayImage(mContent, image, R.drawable.icon);
image.setScaleType(ScaleType.FIT_XY);
layout.addView(image);
return layout;

}

我认为问题出现在这一行:

ImageView image = new ImageView(getActivity());
尝试传递在onCreateView方法末尾返回的布局变量,而不是将碎片主机活动作为参数(通过getActivity()传递给此构造函数)

ImageView image = new ImageView(layout);
代码如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);

ImageView image = new ImageView(layout);
image.setTag(mContent);
image.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
    HomeActivity h = new HomeActivity();
    String url = h.getEventUrl();

    Intent childClass = new Intent(getActivity(), HomeEventDetailActivity.class);

    childClass.putExtra("eventUrl",url);
    TabGroupActivity parentActivity = (TabGroupActivity)h.getParent();
    parentActivity.startChildActivity("Child_Main1", childClass);
}
});
imageManager.displayImage(mContent, image, R.drawable.icon);
image.setScaleType(ScaleType.FIT_XY);
layout.addView(image);
return layout;
}