Dav*_*per 5 android android-fragments android-activity
我有一个片段,我将在其中执行以下操作:
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,我收到runOnUiThread
了警告may produce NullPointerException
。代码可以正常工作。Android Studio 建议我像这样更改代码:
Objects.requireNonNull(getActivity()).runOnUiThread(new Runnable() {
@Override
public void run() {
Run Code Online (Sandbox Code Playgroud)
这是明智的吗?有没有其他/更好的方法?
这取决于您的目标是什么:
1)您希望方法调用者知道他在错误的状态下调用此方法犯了一个错误,其中getActivity()
private void myMethod() {
if(null == getActivity()) {
throw new IllegalStateException("Trying to call getActivity() at a state where the Activity equals null"); // Or new NullPointerException("")
}
// Do your stuff with getActivity()
}
Run Code Online (Sandbox Code Playgroud)
2)你知道在你的情况下getActivity()
不会抛出 a NullPointerException
:
private void myMethod() {
assert getActivity() != null;
// Do your stuff with getActivity()
}
Run Code Online (Sandbox Code Playgroud)
3)您知道getActivity()
可能为空,您不希望应用程序突然停止:
private void myMethod() {
if(null == getActivity()) {
return;
}
// Do your stuff with getActivity()
}
Run Code Online (Sandbox Code Playgroud)
使用 Objects.requireNonNull() 还需要 api 级别 19 (4.4 (KITKAT))
您还可以在这里获得大量信息
归档时间: |
|
查看次数: |
1742 次 |
最近记录: |