设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]

Posted

技术标签:

【中文标题】设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]【英文标题】:set onclick listener not working in android for moving from one fragment to another activity [duplicate] 【发布时间】: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 我更正了它,但它仍然无法正常工作。应用仍然崩溃 尝试调试,你可以得到它给出错误的地方,或者发布异常堆栈跟踪 【参考方案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();方法你没有提到你得到的活动。

【讨论】:

以上是关于设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gridlayout 设置 OnClick android cardview 示例

如何在android中停止闹钟

播放动画时无法点击android按钮

是否可以覆盖我的 android 应用程序中所有视图的 onClick 侦听器?

Android中三种创建监听器的方法

在 Android 中以编程方式创建的多个文本视图的单个 onclick 侦听器