![](/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.