我正面临一个无法解决的(对我来说)问题,嵌套的 AlertDialog 使用以下代码
final AlertDialog.Builder button_cook_action = new AlertDialog.Builder(this);
final EditText cookMl = new EditText(this);
cookMl.setInputType(InputType.TYPE_CLASS_NUMBER);
button_cook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button_cook_action.setTitle(R.string.kitchen_recipe_button_cook)
.setMessage(R.string.kitchen_recipe_button_cook_volume)
.setView(cookMl)
.setPositiveButton(R.string.Yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
AlertDialog.Builder builderCooking = new AlertDialog.Builder(RecipeActivity.this);
builderCooking.setTitle(recipe.getName())
.setMessage("message");
builderCooking.show();
}
})
.setNegativeButton(R.string.No, null)
.show();
}
});
第一次调用工作正常,但是当我第二次调用它时,它给了我:
FATAL EXCEPTION: main
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我已经在这个论坛上搜索过,但没有成功。
如果有人有线索。提前致谢:)
最佳答案
你可以这样做 - 问题是如果你第二次使用 EditText
它已经有一个父级 - 你需要每次在你的 onClick 中创建一个新的()
:
button_cook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder button_cook_action = new AlertDialog.Builder(this);
final EditText cookMl = new EditText(this);
cookMl.setInputType(InputType.TYPE_CLASS_NUMBER);
button_cook_action.setTitle(R.string.kitchen_recipe_button_cook)
.setMessage(R.string.kitchen_recipe_button_cook_volume)
.setView(cookMl)
.setPositiveButton(R.string.Yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
AlertDialog.Builder builderCooking = new AlertDialog.Builder(RecipeActivity.this);
builderCooking.setTitle(recipe.getName())
.setMessage("message");
builderCooking.show();
}
})
.setNegativeButton(R.string.No, null)
.show();
}
});
关于java - 嵌套的警告对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589917/