有关活动引用的Android Studio 3.0棉绒警告

Ove*_*olt 2 android lint android-studio-3.0

将项目升级为使用API​​级别为27.0.0(Android 8.1)的Android Studio 3.0之后,我收到了许多与片段中使用getActivity()有关的新的掉线警告(我认为这很好)。

例子:

((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);

getActivity().getMenuInflater().inflate(R.menu.pavingreport_dialog_menu, menu);
Run Code Online (Sandbox Code Playgroud)

这两个示例都抱怨存在空异常。

例:

Method invocation 'getMenuInflater' may produce 'java.lang.NullPointerException'
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将活动添加为字段并在onCreate或其他过程中对其进行初始化来解决此问题,但这只会删除警告...

问题:

  1. 使用getActivity来指代Activity不是可行的方法吗?什么是最佳做法?
  2. 这是我可以忽略的AS中的“错误”吗?

Nik*_*las 5

getActivity()中带有支持库27.0.0 Fragment@Nullable注释。感谢杰克。这意味着它现在可以按预期运行,因为它可以返回null。

  • 这个答案似乎是在解决OP的问题的第二部分(为什么),而不是第一部分(实际上我们应该怎么做)。 (4认同)