Android 单击按钮时显示AlertDialog出现问题

Android 单击按钮时显示AlertDialog出现问题,android,Android,我的活动中有一个按钮,我想在单击按钮时显示AlertDialog: @Override public void onClick(View view) { case R.id.btnDetailedCall: final String[] phoneArray=ad.getPhone().split(" "); if(phoneArray.length>1){ AlertDialog.Builder builder=n

我的活动中有一个按钮,我想在单击按钮时显示AlertDialog:

  @Override
public void onClick(View view) {
     case R.id.btnDetailedCall:
        final String[] phoneArray=ad.getPhone().split(" ");

        if(phoneArray.length>1){

            AlertDialog.Builder builder=new AlertDialog.Builder(this);
            builder.setTitle("Title");
            builder.setSingleChoiceItems(phoneArray, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    selectedPhone=phoneArray[which];
                }
            });
            AlertDialog dialog=builder.create();
            dialog.show();
  }
当我将此消息传递给AlertDialog时,构造函数代码正常运行,但对话框不会出现在屏幕上。我认为这里的引用不正确,所以我尝试了getBaseContext,得到了WindowManager$BadTockenException:无法添加窗口-tocken null不适用于应用程序

非常感谢您的帮助,谢谢。

试试这个:

AlertDialog.Builder builder=new AlertDialog.Builder(className.this);

其中className是活动类的名称,即主外部类。

传递该名称可能引用错误的对象,正在尝试传递ClassName.this,其中ClassName是您正在使用的实际类的名称-以下是我在应用程序中请求用户文本输入时使用的示例代码块,可能会有所帮助:

AlertDialog.Builder alert = new AlertDialog.Builder(MyClassName.this);
alert.setTitle("My title");
alert.setMessage("Some info I want to tell the user about");
final EditText input = new EditText(MyClassName.this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
alert.setView(input);
alert.setPositiveButton("Do it", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        try{
            int value = Integer.parseInt(input.getText().toString());
            doIt(value);
        }catch (Exception e){
            finish();
        }
    }
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // Canceled.
        finish();
    }
});
alert.show();
你可以试试

AlertDialog.Builder builder = new AlertDialog.Builder( getApplicationContext() );

尝试builder.show而不是最后两行。

尝试在AlertDialog.builder语句前面添加新关键字,并通过执行.setTitle将其他语句链接到初始语句。。。等等,在后面的行中。我有一些这样的工作


刚刚意识到您的代码和我的代码之间的一个关键区别是您正在使用builder.create,而我正在有效地使用builder.show-查看使用builder.show是否有任何区别。尝试了此操作,但对话框仍然没有出现在屏幕上。这会引发上述异常。这对我来说很有效。您是否已检查其他内容是否未按预期工作?如果您删除builder.setSingleChoiceItems。。。那会显示吗?
new AlertDialog.Builder(this)
    .setTitle("Test")
    .create()
    .show();