java - 嵌套的警告对话框

标签 java android

我正面临一个无法解决的(对我来说)问题,嵌套的 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/

相关文章:

Java/ Kotlin : Finding the intersection of multiple HashSets by class ID

java - 有没有一种方法可以使用创建 JOptionPane 的字符串的方法? ( java )

java - 如何使用netbeans在sqlite表中自动插入当前时间?

java - 如何打破对接口(interface)的强依赖?

java - 如何使用 JSON 填充子项微调器?

java - 无法访问 servlet 文件,因为 apache 安装在本地计算机上,表单的操作属性中应该给出什么路径?

android - iOS:类似 Android 布局的相对定位

Android - 从 Firebase 检索数据

java - Android AlarmManager 随机触发

android - 定期 wifi 扫描并将结果导出到 txt 文件