Android开发Connect3游戏点击play again按钮触发崩溃如何解决
问题根因
崩溃由GridLayout类型不匹配直接导致:
你在MainActivity中导入的是系统原生包下的android.widget.GridLayout,但布局文件中实际使用的是AndroidX兼容包提供的androidx.gridlayout.widget.GridLayout,两类不属于同一继承体系,在playAgain方法中执行强制类型转换时触发ClassCastException,最终导致应用崩溃。
修复方案
- 修改MainActivity顶部的GridLayout导入语句
将原有导入:
import android.widget.GridLayout;
替换为AndroidX兼容包的导入:
import androidx.gridlayout.widget.GridLayout;
- (可选校验)打开对应布局XML文件,确认
R.id.gridLayout对应的控件标签为完整的androidx.gridlayout.widget.GridLayout,如果写的是简写GridLayout建议同步替换为完整包名声明,避免后续出现其他兼容异常。 - 重新编译运行即可,修复后点击play again按钮可正常重置游戏状态,不会再触发崩溃。
可选优化点
当前胜负判断逻辑存在冗余:你在遍历每个获胜位置时,只要未匹配到获胜条件就会执行一次平局校验,会导致重复执行多次平局判断代码。可以把平局校验逻辑从winningPositions的遍历循环中抽出来,等所有获胜位置都遍历完成后再统一判断是否平局,减少不必要的代码执行。
内容的提问来源于stack exchange,提问作者prashant kumar
相关产品推荐
相关产品推荐

