我有启动Datepicker的片段。 Android Studio最近抛出了一条错误消息:“方法调用'getSystemService'可能在以下代码上产生'NullPointerException':
context.drawImage(imageObj,0 ,0, 100, 100);
Android Studio建议的“修复”是“用'Objects.requireNonNull(getActivity())'代替”
这样做然后在“ .requireNonNull(getActivity())...”上引发另一个Android Studio错误
一个建议的修复程序可以清除上一条错误消息,从而对代码执行此操作:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
// Hide the soft keyboard when the fragment is created.
InputMethodManager inputManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
...
}
但是,以上是否意味着对于OS
答案 0 :(得分:1)
Method invocation getSystemService may produce NullPointerException
只是警告。它告诉您可以获取NullPointerException,因为getSystemService(Context.INPUT_METHOD_SERVICE)
可能返回null
。您只需要执行null检查:)
答案 1 :(得分:1)
这只是一个警告。您可以放心地忽略它。
为了更好地兼容Kotlin,Google在API 28的SDK中添加了一堆@Nullable和@NotNull批注。在Java中,没有功能上的区别,只是您现在将看到更多这些警告。
getActivity()
在Fragment中通常不为null,除非您在初始化期间或附加上下文之前调用它。
答案 2 :(得分:1)
尝试
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
// Hide the soft keyboard when the fragment is created.
if (getActivity() != null) {
InputMethodManager inputManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
...
}
}