![](/img/trans.png)
[英]Android : EditText and TextView are misaligned in alertdialog
[英]IllegalStateException with TextView inside AlertDialog on Android project
我正在研究Android项目。 我有一些问题,我不知道如何解决它。 我发现了类似的主题,但建议的解决方案没有帮助。
在我点击按钮以获得Dialog(内置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层次结构中 - 如果它已经存在于您的活动,片段或其他对话框中,则无法重复使用它。
一个选项是创建一个新的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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.