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

AlertDialog的setSingleChoiceItems方法不显示选项问题求助

解决AlertDialog单选选项不显示的问题

问题出在你同时调用了setMessage()和setSingleChoiceItems()——AlertDialog的布局中,消息文本区域和单选列表区域是互斥的,调用setMessage()会占据列表的显示位置,导致选项无法展示。

只需要移除setMessage("Message")这一行代码,单选选项就能正常显示了。修正后的代码如下:

final CharSequence[] options = {"item1", "item2", "item3"};
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("Title")
        .setIcon(R.mipmap.icon)
        .setSingleChoiceItems(options, 0, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d("Selection", "Something selected");
            }
        })
        .setPositiveButton("Accept", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "Toast1", Toast.LENGTH_SHORT).show();
            }
        })
        .setNegativeButton("Decline", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show();
            }
        }).create();
Button btnDialog2 = (Button) findViewById(R.id.btnDialog2);
btnDialog2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        builder2.show();
    }
});

如果确实需要在对话框中显示提示文本,可以考虑:

  • 将提示内容合并到setTitle()中,比如setTitle("Title\nMessage")
  • 使用自定义布局(通过setView()方法)来同时展示文本和单选列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:24:47