我正在从事Android项目。我有一些问题,我不知道如何解决。我找到了类似的主题,但是建议的解决方案没有帮助。
在单击按钮以获取对话框(内部带有EditText)后,一切正常。但是,当我第二次去时,我收到了错误消息。
java.lang.IllegalStateException:指定的子代已经有一个父代。您必须先在孩子的父母上调用removeView()。
我的代码
private void MakeDescription()
{
try
{
DialogInterface.OnClickListener ConfirmProductClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
String url = txtDesc.getText().toString();
// txtDesc it's a EditText
break;
case DialogInterface.BUTTON_NEUTRAL:
dialog.cancel();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getResources().getString(R.string.app_label3));
builder.setView(txtDesc).setPositiveButton(getResources().getString(R.string.app_labe1), // txtDesc it's a EditTextConfirmProductClickListener)
.setNeutralButton(getResources().getString(R.string.app_label2), ConfirmProductClickListener)
.show();
}
catch (Exception exc)
{
Log.e("ex", exc.toString());
}
}
最佳答案
例外非常明确,txtDesc已经在View层次结构中-如果您的活动,片段或其他对话框中已经存在txtDesc,则无法重复使用。
一种选择是创建一个新的EditText视图:
try
{
final EditText editText = new EditText(this);
DialogInterface.OnClickListener ConfirmProductClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
String url = editText.getText().toString();
break;
case DialogInterface.BUTTON_NEUTRAL:
dialog.cancel();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getResources().getString(R.string.app_label3));
builder.setView(editText).setPositiveButton(getResources().getString(R.string.app_labe1), // txtDesc it's a EditTextConfirmProductClickListener)
.setNeutralButton(getResources().getString(R.string.app_label2), ConfirmProductClickListener)
.show();
}
catch (Exception exc)
{
Log.e("ex", exc.toString());
}
关于java - IllegalStateException与Android项目上AlertDialog中的TextView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16567637/