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(设置列表项)不能同时生效,二者只能选其一。解决方法很直接:
- 移除
setMessage("Choose Your color")这一行,或者 - 将提示文本整合到标题中
修改后的按钮点击事件代码示例:
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
相关产品推荐
相关产品推荐

