当我在Fragment Class中为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);
}
}
请帮助!!!!
答案 0 :(得分:1)
我认为问题出现在这一行:
ImageView image = new ImageView(getActivity());
不要将片段主机活动作为参数(通过getActivity())传递给此构造函数,而是尝试传递在onCreateView方法末尾返回的布局变量。
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;
}