Android点击按钮跳转ViewPager页面时App崩溃问题排查
崩溃原因及修复方案
核心崩溃触发点
你遇到的直接崩溃原因是页面跳转逻辑完全写错:
startActivity()要求Intent传入的目标必须是已在AndroidManifest.xml中注册的Activity子类,但你当前跳转代码写的是new Intent(TelaPrincipal.this,SlideAdapter.class),SlideAdapter是继承自PagerAdapter的适配器类,根本不是Activity,系统找不到对应可启动的组件,会直接抛出ActivityNotFoundException导致应用闪退。- 你预期跳转的目标是承载ViewPager的
treinos类(继承自AppCompatActivity),应该把这个类作为Intent的跳转目标。
其他会导致运行/编译异常的问题
- 两个RelativeLayout布局文件都缺少闭合标签
你贴出的单页卡布局、ViewPager承载页布局,文件末尾都没有写</RelativeLayout>闭合标签,要么编译阶段直接报资源错误,要么运行时加载布局抛出InflateException崩溃。 - 类名不符合Java命名规范
承载ViewPager的Activity类名treinos是小写开头,不符合Java大驼峰命名规范,后续注册Manifest、写跳转逻辑时很容易因为大小写写错触发类找不到异常,建议重命名为Treinos。 - 未确认Activity注册状态
新写的treinosActivity如果没有在AndroidManifest.xml中注册,哪怕跳转逻辑写对了也会崩溃。
具体修复操作
- 修改首页按钮的跳转代码:
bt_to_treinos.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 如果把类重命名为Treinos,这里替换成Treinos.class即可 Intent intent = new Intent(TelaPrincipal.this, treinos.class); startActivity(intent); } });
- 补全两个布局文件的闭合标签,在两个布局文件的最后一行分别加上
</RelativeLayout>。 - 打开
AndroidManifest.xml,确认treinosActivity已经注册,没有的话在<application>标签内添加如下配置:
<activity android:name=".treinos" android:exported="false" />
- (可选规范优化)将
treinos类重命名为Treinos,同步修改Manifest、跳转代码里对应的类引用,避免后续因类名不规范产生的低级错误。
额外排查提示:如果完成以上修改后点击按钮仍触发空指针崩溃,检查
IniciarComponentes()方法内是否通过findViewById正确绑定了bt_to_treinos按钮控件。
内容的提问来源于stack exchange,提问作者Matheus Melgares
相关产品推荐
相关产品推荐

