Android Studio 无XML/Layout为Activity添加按钮时应用闪退求助
Android Studio开发问题修复方案
- Intent构造报错修复
你代码中红色报错的Intent intent = new Intent(this, MainActivity2.class)行,是因为this指向了Button.OnClickListener匿名内部类实例,Intent构造需要传入Activity上下文,修改为Intent intent = new Intent(GamePlayScene.this, MainActivity2.class)即可。另外你创建完Intent后没有添加startActivity(intent)执行跳转,补全这行代码才能实现点击重试进入MainActivity2的逻辑。 - MainActivity2不显示游戏元素修复
你绑定的XML布局是空的,游戏内容是通过代码直接渲染的自定义View/Scene,需要在MainActivity2的onCreate方法中,调用setContentView加载XML后,将游戏渲染的根View实例添加到XML的根布局容器中,才能正常显示飞船等游戏元素。 - 添加按钮后崩溃的排查方向
- 先检查
AndroidManifest.xml中是否注册了MainActivity2,未注册的Activity跳转时会直接触发崩溃 - 如果你在XML中定义按钮后通过
findViewById获取实例,要保证id和XML中声明的完全一致,类型匹配,否则会出现空指针异常导致崩溃 - 确认你页面的根布局类型,如果根布局不是FrameLayout,使用
FrameLayout.LayoutParams添加控件会触发布局参数类型不匹配的崩溃
- 先检查
修复后的完整代码参考:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button= new Button (this); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); params.topMargin = 0; params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; button.setText("Retry"); addContentView(button, params); button.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(GamePlayScene.this, MainActivity2.class); startActivity(intent); } }); }
内容的提问来源于stack exchange,提问作者Dannielle Marvic Banaban
相关产品推荐
相关产品推荐

