findViewById(android.R.id.content)可以为Snackbars返回null吗?

AJJ*_*AJJ 2 android findviewbyid snackbar

我希望能够显示Snackbars,但我对这个概念感到困惑,我必须提供一个View.您认为它允许您默认在屏幕底部显示Snackbar,但也许我遗漏了一些东西.

无论如何,这可以通过使用视图来完成:

findViewById(android.R.id.content)

但是我得到一个警告,即使它似乎总是在我尝试的任何地方都可以使用,但这可能是空的.什么时候可能是null?

Dar*_*ind 5

findViewById 如果您尝试查找当前布局中不存在的视图,则始终为null.

警告只是一个帮助.它可能非常通用,如果你查看Activity类的源代码,你会发现这个方法:

@Nullable
public View findViewById(@IdRes int id) {
    return getWindow().findViewById(id);
}
Run Code Online (Sandbox Code Playgroud)

Nullable注释只是告诉编译器,有可能是得到一个的可能性null在这里引用和绒毛会对此做出何种反应.它不知道如何区分一个findViewById(android.R.id.content)或一些其他呼叫findViewById(R.id.myCustomLayoutId).你可以自己添加Lint检查.

你可以findViewById(android.R.id.content)随时随地使用Activity.

您可以放心地使用getView()内部FragmentonCreateView被调用.

  • 啊,是的,您可以调用 `getActivity().findViewById(android.R.id.content)` 来获取根视图。 (2认同)