You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用List<String>.size()导致Android设备上APP崩溃的问题排查

问题分析与解决

崩溃核心原因

你遇到的崩溃根本不是空指针异常,而是TextView的setText(int)方法被误用。

TextView有多个重载的setText方法:

  • setText(String):直接显示传入的字符串内容
  • setText(int):传入的int会被当作Android资源ID(比如R.string.xxx)去查找对应的字符串资源

当你调用testTextView.setText(list.size())时,list.size()返回的是2,系统会去查找ID为2的字符串资源,显然不存在,就会抛出Resources$NotFoundException,导致APP崩溃。而调用testTextView.setText(list.get(0))时,传入的是String类型,匹配了正确的重载方法,所以能正常运行。

解决方案

把列表长度转换成字符串类型再传入即可,几种简单写法:

  • 拼接空字符串:
    testTextView.setText(list.size() + "");
    
  • 使用String.valueOf():
    testTextView.setText(String.valueOf(list.size()));
    
  • 使用Integer.toString():
    testTextView.setText(Integer.toString(list.size()));
    

关于空指针异常的可能原因

虽然你这次的问题不是空指针,但如果确实出现空指针,可能的原因有:

  • TextView未正确初始化:如果findViewById(R.id.testText)是在onCreate方法之外调用的(比如你代码里直接声明的位置,此时Activity还没完成布局加载),testTextView会是null,调用setText就会触发空指针。正确做法是把findViewById放在onCreate的setContentView之后。
  • List对象为null:如果list没有被初始化(比如List<String> list = null;),调用list.size()或list.get(0)都会触发空指针。但你这里用Arrays.asList创建了有效列表,所以排除这种情况。
  • 布局文件中不存在对应ID的TextView:如果布局里没有testText这个ID的控件,findViewById会返回null,调用setText也会空指针。

内容的提问来源于stack exchange,提问作者fireslide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:58:25