gpt4 book ai didi

java - alertdialog - removeView 必须被调用

转载 作者:行者123 更新时间:2023-11-29 03:23:50 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com