【问题标题】:set onclick listener not working in android for moving from one fragment to another activity [duplicate]设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]
【发布时间】:2017-04-03 01:24:59
【问题描述】:

当我设置意图从一个片段转到另一个活动时,我的应用程序崩溃了。我在上面设置了 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;
}

` 这是我的日志猫

【问题讨论】:

  • 您是否在清单中注册了 DetailPost?请添加Logcat
  • 在 onCreateView() 中写入 setOnclick 图像列表,您将其关闭。只需检查大括号{}打开和关闭
  • 你可能会得到空指针异常,因为@Allu 说你关闭了大括号,将你的 onClickListener 移动到大括号内
  • @rookieDeveloper 我更正了它,但它仍然无法正常工作。应用仍然崩溃
  • 尝试调试,你可以得到它给出错误的地方,或者发布异常堆栈跟踪

标签: android android-fragments android-activity nullpointerexception


【解决方案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);
    }
 });
}

我会建议尝试更改您的代码。它会工作

【讨论】:

    【解决方案2】:

    好的,其实很简单,你只需要修改你的代码

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

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

    然后将intent改为

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

    因为当你调用 getActivity();方法你没有提到你得到的活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      相关资源
      最近更新 更多