调用需要 api 等级 19 当前最小值是 16 java.util.objects#requirenonnull
Call requires api level 19 current min is 16 java.util.objects#requirenonnull
一开始的代码是:
private void hideKeyboard()
{
View view = getCurrentFocus();
if (view != null)
{
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
警告信息是:
Method invocation 'hideSoftInputFromWindow' may produce
'java.lang.NullPointerException'
所以我在提示下将代码更改为:
private void hideKeyboard()
{
View view = getCurrentFocus();
if (view != null)
{
((InputMethodManager) Objects.requireNonNull(getSystemService(Context.INPUT_METHOD_SERVICE)))
.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
这次的警告信息是:
call requires api level 19 current min is 16
java.util.objects#requirenonnull
我怎么知道?谢谢。
试试下面
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
java.util.Objects
class 已在 API 19 中添加到 Android 平台,因此尝试在任何设备上使用 class 及其方法 运行 ning API 18 或更低会导致崩溃。
通常,您可以通过在 运行 时检查设备的 API 级别来解决此问题,使用如下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// do your work here
}
(KITKAT
常量定义为 19
,因此,在本例中,我们的代码只会在具有 API 19 或更新版本的设备上 运行 .)
但是,在您的特定情况下,您真的只是想摆脱编译器警告;您 没有 来使用 Objects.requireNonNull()
这样做。如果您想要与 Objects.requireNonNull()
相同的 行为 ,您可以这样写:
InputMethodManager imm =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm == null) {
throw new NullPointerException();
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
一开始的代码是:
private void hideKeyboard()
{
View view = getCurrentFocus();
if (view != null)
{
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
警告信息是:
Method invocation 'hideSoftInputFromWindow' may produce 'java.lang.NullPointerException'
所以我在提示下将代码更改为:
private void hideKeyboard()
{
View view = getCurrentFocus();
if (view != null)
{
((InputMethodManager) Objects.requireNonNull(getSystemService(Context.INPUT_METHOD_SERVICE)))
.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
这次的警告信息是:
call requires api level 19 current min is 16 java.util.objects#requirenonnull
我怎么知道?谢谢。
试试下面
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
java.util.Objects
class 已在 API 19 中添加到 Android 平台,因此尝试在任何设备上使用 class 及其方法 运行 ning API 18 或更低会导致崩溃。
通常,您可以通过在 运行 时检查设备的 API 级别来解决此问题,使用如下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// do your work here
}
(KITKAT
常量定义为 19
,因此,在本例中,我们的代码只会在具有 API 19 或更新版本的设备上 运行 .)
但是,在您的特定情况下,您真的只是想摆脱编译器警告;您 没有 来使用 Objects.requireNonNull()
这样做。如果您想要与 Objects.requireNonNull()
相同的 行为 ,您可以这样写:
InputMethodManager imm =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm == null) {
throw new NullPointerException();
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);