Исходя из другого вопроса, который я задал, я создал новый класс для AlertDialog.Builder.Это используется в нескольких классах, продуманных мое приложение.Я создаю объект класса в классе, который я использую, затем вызываю метод show (), когда это необходимо.Это выглядит правильно.
У меня проблема, как только я пытаюсь снова вызвать show (), я получаю следующую ошибку:
java.lang.IllegalStateException: The specified child already has a parent.
You must call removeView() on the child's parent first
Я не уверен на 100%, где мне нужночтобы вызвать это removeView или конкретное представление.Ниже приведен код класса диалога
public class CommentDialog {
private final Context context;
private final AlertDialog.Builder builder;
private String text;
private EditText editText;
public CommentDialog(Context context) {
this.context = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.comment_dialog, null);
editText = (EditText) layout.findViewById(R.id.comment_text);
editText.setText(getCommentText());
builder = new AlertDialog.Builder(context);
builder.setView(LayoutInflater.from(context).inflate(R.layout.round_comment_dialog, null));
builder.setTitle(R.string.round_comment_title);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
setCommentText(editText.getText().toString());
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
builder.create();
}
public void setCommentText(String pCommentText) {
text = pCommentText;
}
public String getCommentText() {
return text;
}
public void show() {
builder.show();
}
}
Спасибо за ваше время
РЕДАКТИРОВАНО
добавлено round_comment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dip"
android:background="@drawable/border_main"
android:orientation="vertical" >
<EditText
android:id="@+id/comment_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:gravity="top|left"
android:inputType="textMultiLine"
android:lines="5" >
</EditText>
</LinearLayout>
РЕДАКТИРОВАННЫЙ MK2
В основном классе я делаю следующее:
над конструктором
private CommentDialog myDialog;
в пределах oncreate ()
myDialog = new CommentDialog(this);
Затем нажмите кнопку:
case R.id.round_comment_button:
myDialog.setommentText(comentText);
myDialog.show();
roundComentText = myDialog.getRoundCommentText();
break;