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

Android中setItems()方法无法显示列表问题求助

问题描述

我在Android Studio中编写了如下代码,用于生成String类型的列表项。但运行代码后,发现列表并未显示,我不清楚代码存在什么问题。

package com.example.practiceactivities;

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

import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.*;

public class MainActivity extends AppCompatActivity {

AlertDialog.Builder builder;

Button button;

TextView txt;

 String [] Colors = {"Red","Green","Blue"};

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

     builder = new AlertDialog.Builder(MainActivity.this);
     button = findViewById(R.id.button);
     txt = findViewById(R.id.textt);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            builder.setTitle("Color Box")
                    .setMessage("Choose Your color")
                    .setItems(Colors, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {

                            String color = Colors[i];
                            txt.setText(color);
                        }

                    })

                    .create().show();
        }
    });
}
}

界面截图


问题分析与解决

核心问题是你同时调用了setMessage和setItems方法,这两个方法会占用AlertDialog的同一显示区域,导致列表被消息文本覆盖无法显示。

AlertDialog的构建逻辑里,setMessage(设置消息文本)和setItems(设置列表项)不能同时生效,二者只能选其一。解决方法很直接:

  1. 移除setMessage("Choose Your color")这一行,或者
  2. 将提示文本整合到标题中

修改后的按钮点击事件代码示例:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        builder.setTitle("Color Box - Choose Your color")
                .setItems(Colors, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String color = Colors[i];
                        txt.setText(color);
                    }
                })
                .create().show();
    }
});

额外检查项:

  • 确认activity_main.xml布局文件中,确实存在id为button和textt的控件
  • 注意你的列表是在点击按钮后弹出的对话框中显示,主界面本身不会直接显示列表,测试时需点击按钮触发对话框

内容的提问来源于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 08:22:13