Fragment向Activity传递Intent时应用崩溃求助(使用CardView点击事件)
Fragment中CardView点击跳转Activity崩溃的解决方案
可能的崩溃原因及对应解决方法:
未注册目标Activity
系统无法找到未在清单文件中声明的Activity,直接导致崩溃。需在AndroidManifest.xml中添加paid_courses的注册代码:<activity android:name=".paid_courses" />Fragment未依附到Activity导致
getActivity()为空
若Fragment还未绑定到Activity,getActivity()会返回null,创建Intent时触发异常。推荐使用requireActivity()替代(该方法会在Activity为空时抛出明确异常,便于排查):public void paid_courses_clicked(View view) { Intent intent = new Intent(requireActivity(), paid_courses.class); startActivity(intent); }点击事件绑定错误
检查fragment_home.xml中CardView的android:onClick属性是否与方法名完全匹配(大小写、拼写需一致):<androidx.cardview.widget.CardView ... android:onClick="paid_courses_clicked"> <!-- 子视图内容 --> </androidx.cardview.widget.CardView>推荐使用代码绑定点击事件(更可靠)
避免XML绑定的潜在问题,直接在onCreateView中通过代码设置点击监听:@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootview = inflater.inflate(R.layout.fragment_home, container, false); // 替换为你的CardView实际ID CardView paidCourseCard = rootview.findViewById(R.id.card_paid_courses); paidCourseCard.setOnClickListener(v -> { Intent intent = new Intent(requireActivity(), paid_courses.class); startActivity(intent); }); return rootview; }
内容的提问来源于stack exchange,提问作者Shivam Dohre
相关产品推荐
相关产品推荐

