良将如匠 2022-08-23 18:01 采纳率: 50%
浏览 34

Android studio捕获不到错误并闪退

问题遇到的现象和发生背景

Spinner.setSelection(3)报错直接闪退,Spinner.setSelection(3,false)可以被catch到而且不闪退是为什么

问题相关代码,请勿粘贴截图
       b1.setOnClickListener(new View.OnClickListener() {
           @Override
            public void onClick(View view) {
               try {
                   a1.setSelection(3);//a1是一个spinner,只有三个选项,position选3会数组越界,这样会闪退

              }catch(Exception e){
                   Toast.makeText(MainActivity.this,"错误",Toast.LENGTH_LONG).show();
               }

            }
        }
       b1.setOnClickListener(new View.OnClickListener() {
           @Override
            public void onClick(View view) {
               try {
                   a1.setSelection(3,false);//a1是一个spinner,只有三个选项,position选3会数组越界,这样不会闪退,而且能被catch到

              }catch(Exception e){
                   Toast.makeText(MainActivity.this,"错误",Toast.LENGTH_LONG).show();
               }

            }
        }

运行结果及报错内容

闪退的时候显示致命错误数组越界,第二个不会报错

  • 写回答

2条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-08-24 11:46
    关注
    public void setSelection(int position, boolean animate) {
        // Animate only if requested position is already on screen somewhere
        boolean shouldAnimate = animate && mFirstPosition <= position &&
                position <= mFirstPosition + getChildCount() - 1;
        setSelectionInt(position, shouldAnimate);
    }
    @Override
    public void setSelection(int position) {
        setNextSelectedPositionInt(position);
        requestLayout();
        invalidate();
    }
    

    这两个用法区别很大哦

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月23日

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振