【问题标题】:AlertDialog - setTitle okay, setMessage okay, both errorAlertDialog - setTitle 好,setMessage 好,都错误
【发布时间】:2015-03-16 22:14:45
【问题描述】:

从我的活动中,我启动了第一个带有 textView 的 alertDialog,以从用户那里获取名称。 之后,第二个 alertDialog 被打开。它有一个 listView,用户必须选择它的项目 2,3 或 4 之一。

我想为两个 alertDialogs 设置标题和消息。但似乎我只能设置其中之一。如果我尝试在第二个 alertDialog 上设置我的 listView 保持为空。

这是我的代码:

final AlertDialog.Builder alert = new AlertDialog.Builder(this);
        final AlertDialog.Builder builder = new AlertDialog.Builder(this );

        builder.setTitle("Amount of answers");
       // builder.setMessage("Please choose the amount of answers for your question.");
        ArrayList<Integer> myArrayList= new ArrayList<Integer>();
        for(Integer i=2;i<=4;i++){
            myArrayList.add(i);
        }
        ListAdapter myAdapter = new ArrayAdapter<Integer>(getBaseContext(), R.layout.support_simple_spinner_dropdown_item,myArrayList);
        builder.setAdapter(myAdapter, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if(which==0){
                    startView.amountOfAnswers = 2;
                }
                if(which==1){
                    startView.amountOfAnswers = 3;
                }
                if(which==2){
                    startView.amountOfAnswers = 4;
                }
                Intent myIntent = new Intent(getBaseContext(),editQuestion.class);
                Bundle myBundle = new Bundle();
                myBundle.putString("fill","false");
                myIntent.putExtras(myBundle);
                startActivity(myIntent);
            }
        });


        alert.setTitle("Name of question");
        //alert.setMessage("Please enter the name of your question.");
        final EditText input = new EditText(this);
        alert.setView(input);
       alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                Editable value = input.getText();
                startView.questionName=value.toString();
                startView.questionPath=startView.quizPath + "/" + startView.questionName;
                builder.show();
            }
        });
       alert.show();

当我删除 setMessage 方法之前的 // 时,我的 listView 是空的。

你看到我的错误了吗?

【问题讨论】:

  • 请显示 logcat 输出...

标签: android android-alertdialog


【解决方案1】:

您不能在同一警报 AlertDialog.Builder 上调用 setMessage 和 setAdapter,它们都会更改对话框的内容区域。

public AlertDialog.Builder setAdapter(ListAdapter适配器,DialogInterface.OnClickListener监听器)

在 API 级别 1 中添加 设置由给定 ListAdapter 提供的项目列表,作为 content 在对话框中显示,您将通过提供的侦听器收到所选项目的通知。

这就是为什么当你调用setMessage时你的列表是空的

因此,您需要为第二个对话框创建一个布局,其中包含一个 TextView 和一个 ListView,并将其设置为 AlertDialog.Builder 的 View 使用

public AlertDialog.Builder setView(视图视图)

【讨论】:

  • 谢谢!不知道 setAdapter 和 setMessage 是排他的。
【解决方案2】:

你试过这样吗?这是一个带有标题和消息的工作代码

private AlertDialog.Builder build;
build = new AlertDialog.Builder(Activity.this);
        build.setTitle("Delete");
        build.setMessage("Do you want to delete ?");
        build.setPositiveButton("Yes", new DialogInterface.OnClickListener() 
        {
            public void onClick(DialogInterface dialog, int which)
            {
            }
        });

            build.setNegativeButton("No", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int which) 
                {
                    dialog.cancel();
                    }
                });
            AlertDialog alert = build.create();
            alert.show();
            return true;
        }

希望对你有帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2012-09-04
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多