未找到"avoid passing null as the view root"的父项



我有这段代码,我在其中定义了自己的AlertDialog.Builder

public class UnlockDialog extends AlertDialog.Builder {
    public UnlockDialog(Activity context) {
        super(context);
        LayoutInflater inflater = context.getLayoutInflater();
        View dlgView = inflater.inflate(R.layout.unlock_dialog, null); 
        setView(dlgView);
    }
}

代码工作正常,但我在inflater.inflate调用时收到警告:

避免将 null 作为视图根传递(需要解析膨胀布局根元素上的布局参数)

我的适配器中也遇到了这个问题,我可以使用提供parentfalse来解决它,正如我在这里发现的那样: 避免将 null 作为视图根传递(需要解析膨胀布局根元素上的布局参数)

但是,在上述情况下,我似乎没有可用的parent。我试过context.getParent(),但没有用。

在这种情况下,警告不应适用。当attachToRoot为 false 时,root 参数仅用于调用其 generateDefaultLayoutParams() 方法并将生成的LayoutParams分配给膨胀视图。

在这种情况下,对话框将覆盖它们,因此它们无论如何都不会被使用。

请查看本文,特别是每个规则都有例外部分。

但是,因为结果将进入对话框,而对话框不会 公开其根视图(实际上它还不存在),我们没有 访问布局的最终父级,因此我们不能将其用于 通货膨胀。事实证明,这是无关紧要的,因为AlertDialog将 无论如何,删除布局上的任何布局参数并将它们替换为 match_parent。

相关内容

最新更新