java - alertdialog - removeView 必须被调用

标签 java android android-edittext android-alertdialog

我有一个带有编辑文本区域的警告对话框。当我第二次调用它时,应用程序崩溃并出现错误:

02-28 23:25:08.958: E/AndroidRuntime(11533): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

这是我的代码:

alert = new AlertDialog.Builder(this);

    String txt_title = context.getResources().getString(R.string.txt_head_search_coord);
    String txt_message = context.getResources().getString(R.string.txt_mess_search_coord);
    alert.setTitle(txt_title);
    alert.setMessage(txt_message);

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    alert.setView(input);

    alert.setPositiveButton(context.getResources().getString(R.string.Accept), new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
            String value = input.getText().toString();

            // Do something with value!

            dialog.dismiss();
        }
    });

    alert.setNegativeButton(context.getResources().getString(R.string.Cancel), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            dialog.dismiss();
        }
    });

    //UTM Koordinate suchen
    btn_search_coord.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            alert.show();
        }
    });

警报是全局定义的,所以我可以在 onClickListener 中调用它

我已经关闭了我的对话...

最佳答案

AlertDialog.Builder.showBuilder 的内容创建 Alert 实例,包括setView 中给出的 View 。

因此,您的input 将被添加到两个alerts 中。为防止这种情况,请使用 create 创建 AlertDialog 的最终实例,并在该实例上调用 show:

final AlertDialog alertDialog = alert.create();

[...]
// in onClick
alertDialog.show();

从更广泛的角度来看,您应该使用 showDialog(int id) 以及相关的方法 onCreateDialogonPrepareDialog。但是,如果您使用 Fragments,所有这些现在都已弃用,在这种情况下,您应该使用 DialogFragment

关于java - alertdialog - removeView 必须被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107128/

相关文章:

java - 抽屉导航 - 顶部 fragment

java - 设计应用程序和 GUI 之间的接口(interface)

android - 自动从 strings.xml 中删除未引用的字符串

Android EditText 将输入限制在数字范围内

java - Android setOnKeyListener导致ANR(Application Not Responding)提示

java - 表中的 ADF 复选框,所选行缺少计时

java - 在 Karaf 中将第 3 方 jar 作为 OSGI 包获取时遇到问题

android - 错误 : method parseUnknownField in class Builder

java - 将与会者添加到 android 日历事件

java - 输入 EditText 时应用程序崩溃