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

按钮点击切换数组文本触发运行时崩溃,请求排查修复

问题排查与修复方案

嘿,我一眼就发现导致你应用崩溃的问题啦——数组索引越界异常!咱们来一步步拆解:

问题根源

你的代码里硬编码了判断条件 currentIndex == 22,但这个值和你的数组strings的实际长度未必匹配:

  • 数组的索引是从0开始的,比如如果strings的长度是22,那它的最大有效索引是21
  • 当currentIndex走到21时,你的代码会执行currentIndex++变成22,然后尝试访问strings[22],这就超出了数组的有效范围,直接触发运行时崩溃

另外你的逻辑顺序也有点小问题:需求是"当当前索引达到数组长度时提示",但你现在的判断是在递增之前,不符合实际的索引边界判断逻辑。

修复后的代码

把硬编码的22换成数组的长度相关判断,同时调整逻辑顺序,确保永远不会访问超出数组范围的索引:

public void onClick(View v) {
    // 先判断是否已经到了最后一个元素
    if (currentIndex == strings.length - 1) {
        Toast.makeText(azka.this, "YOUR MESSAGE", Toast.LENGTH_SHORT).show();
        return;
    }
    currentIndex++;
    simpleTextSwitcher.setText(strings[currentIndex]);
}

如果你的初始currentIndex是0(显示第一个元素),那上面的代码会在点击到最后一个元素时弹出提示,不再继续递增索引。

额外优化建议

如果你的需求是循环切换(到最后一个后回到第一个),可以改成这样:

public void onClick(View v) {
    currentIndex++;
    // 当索引超出数组长度时,重置为0并提示
    if (currentIndex >= strings.length) {
        Toast.makeText(azka.this, "YOUR MESSAGE", Toast.LENGTH_SHORT).show();
        currentIndex = 0;
    }
    simpleTextSwitcher.setText(strings[currentIndex]);
}

这样既满足提示需求,又能实现循环切换的效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:22:21