2012-07-11 56 views
1

我在片段类中为ImageView添加setOnClickListener时遇到问题。由于NullPointerException,点击ImageView时发生错误。NullPointerException:片段类中的SetOnClickListener

下面是我的代码:

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); 
} 
} 

请帮助!!!!

回答

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; 

}

相关问题