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

Android自定义AlertDialog中Exposed Dropdown Menu无下拉选项问题

问题根因

核心错误在于:你提前用LayoutInflater加载了一次布局、给这个实例里的下拉控件设置了适配器,但后续调用builder.setView()时传入的是布局资源ID而非你已经处理好的View实例,导致弹窗最终加载的是全新的、没有绑定适配器的布局实例,自然点击没有下拉菜单弹出。

修复方案

仅需修改createButton的点击事件逻辑,将builder.setView(R.layout.dialog_main_createremote)改为builder.setView(inflatedView)即可,修改后的点击事件代码如下:

createButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(MainActivity.this);
        LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        final View inflatedView = inflater.inflate(R.layout.dialog_main_createremote, null);
        AutoCompleteTextView actv = inflatedView.findViewById(R.id.dialog_main_dropdown);
        String categories[] = getResources().getStringArray(R.array.categories);
        actv.setAdapter(new ArrayAdapter(MainActivity.this, R.layout.dropdown_item, categories));
        // 此处改为传入你已经完成适配器绑定的View实例,不要传布局资源ID
        builder.setView(inflatedView);
        builder.setTitle("Set control params");
        builder.setNegativeButton("Nope", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.setPositiveButton("Okey", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.show();
    }
});
可选排查项

如果修改后仍有异常,可以检查以下两项配置:

  • 确认res/values/arrays.xml中已经正确定义了categories字符串数组,没有为空、资源名拼写错误的问题
  • 确认你的App使用了Material Components主题,否则Material风格的控件可能无法正常运行
额外提示

如果后续需要获取用户输入的名称和选中的分类,也要从inflatedView实例中查找对应控件取值,不要从其他布局实例中查找。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:57:00