设置onclick监听器不在android中工作,从一个片段移动到另一个活动

时间:2016-11-19 06:20:07

标签: android android-fragments android-activity nullpointerexception

当我设定从一个片段转到另一个片段的意图时,我的应用程序崩溃了。我已在其上设置 onClickListener 。它告诉我没有错误是什么问题。这是它的代码。每当用户点击图像时,他就被带到另一个活动,这就是我想要做的。

    public class HomeFragment extends Fragment  {

     private ImageView images;

     public HomeFragment() {
     // Required empty public constructor
     }
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_home, container, false);
    images = (ImageView) view.findViewById(R.id.complaint_posted);
      images.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        Intent intent=new Intent(getActivity(), DetailPost.class);
        startActivity(intent);
        }
    });
    return view;
}

` 这是我的logcat

Logcat

2 个答案:

答案 0 :(得分:1)

我建议覆盖onActivityCreated方法:

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

   View view = inflater.inflate(R.layout.fragment_home, container, false);
  return view;
 }

 @Override
  public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     images = (ImageView) view.findViewById(R.id.complaint_posted);
     images.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Intent intent=new Intent(getActivity(), DetailPost.class);
    startActivity(intent);
    }
 });
}

我建议您尝试更改代码。它会起作用

答案 1 :(得分:-1)

好的,所以它实际上很简单,你只需要更改你的代码

在开头声明所有内容时添加此行

 final Context context = this.getActivity().getApplicationContext();

然后将意图更改为

Intent intent=new Intent(context, DetailPost.class);

因为当你调用getActivity()时;方法你不是指你正在接受哪项活动。