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

Android Studio自定义布局异常:点击按钮应用崩溃求助

问题排查与修复

核心崩溃原因

你代码里的AlertDialog.Builder builder只做了变量声明,没有初始化实例,点击按钮调用builder.setTitle()时会触发NullPointerException(空指针异常),这就是应用崩溃的直接原因。

修复步骤

  1. 在onCreate方法里,给builder完成初始化:
builder = new AlertDialog.Builder(this);
  1. 额外优化(可选):关闭对话框时用dismiss()比cancel()更符合常规逻辑,不过这不是崩溃原因;布局填充时也可以指定父容器参数,更符合Android布局规范。

修复后的完整代码

package com.example.test_practice_itemselection;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button btn;
    AlertDialog.Builder builder;
    LayoutInflater layout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.button);
        layout = getLayoutInflater();
        // 初始化AlertDialog.Builder实例
        builder = new AlertDialog.Builder(this);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                View customLayout = layout.inflate(R.layout.my_layout, null);
                builder.setTitle("This is a custom layout")
                        .setView(customLayout)
                        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        }).create().show();
            }
        });
    }
}

额外检查点

确保my_layout.xml布局文件存在且无语法错误:比如根布局是否合法、控件ID是否正确,这也是自定义布局可能不显示的潜在原因。

内容的提问来源于stack exchange,提问作者MMd.NrC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:25:20