- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道 getView()
可能会在 onCreateView()
方法中返回 null,但即使我将下面的代码放在 onActivityCreated()
中、onStart()
或 onViewCreated()
方法,它仍然显示有关 Android Studio 中可能的 NullPointerException
的警告(尽管我的程序运行时没有任何问题)。如何摆脱这个警告?
我正在使用 fragment 。
代码:
datpurchased = (EditText) getView().findViewById(R.id.datepurchased);
//datpurchased defined as instance variable in the class
警告:
Method invocation 'getView().findViewById(R.id.datepurchased)' may produce 'java.lang.NullPointerException'
最佳答案
Android Studio 基于 IntelliJ IDEA,这是 IntelliJ 的一项功能,当您在使用某个方法返回的对象之前未检查它是否为 null
时,它会在编译时向您发出警告。
避免这种情况的一种方法是始终检查 null
或捕获 NullPointerException
风格的程序,但它可能会变得非常冗长,尤其是对于您知道总是会发生的事情返回一个对象并且永远不会 null
。
另一种方法是使用诸如 @SuppressWarnings
之类的注解来抑制此类情况下的警告,因为这些方法使用的对象永远不会为 null:
@SuppressWarnings({"NullableProblems"})
public Object myMethod(Object isNeverNull){
return isNeverNull.classMethod();
}
或者,在您的情况下,行级抑制:
//noinspection NullableProblems
datpurchased = (EditText) getView().findViewById(R.id.datepurchased); //datpurchased defined as instance variable in the class
不过,请确保对象真的永远不会为 null。
可以找到有关 IntelliJ 的 @NotNull 和 @Nullable 注释的更多信息 here ,以及更多关于检查和压制的信息 here .
关于java - onActivityCreated/onStart/onViewCreated 方法中的 getView() 出现 NullPointerException 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113709/
在 Android 应用程序中,我实现了一个覆盖 onViewCreated 的 fragment 一旦 View 存在,就设置一些 OnClickListeners。 这在我实现时一切正常。但是,一
我的 Activity 在 linearLayout(R.id.liste,在 scrollView 内)中有一些 fragment ,需要一些时间才能显示。我将数组的大小减少到 50,但它是第一个
我有一个里面有 EditText 的 fragment ,我只想在到达这个 fragment 时自动打开键盘,但我找不到方法。 我认为java提供了一种方法来做到这一点,但我自己找不到。 谢谢。 最佳
当我在 onViewCreated() 中启动我的应用程序时,我需要自动选择所有复选框。 使用这段代码: @Override public void onViewCreated(View view,
我正在使用 android 兼容性库(v4 修订版 8)。在自定义 DialogFragment 中,未调用覆盖的方法 onViewCreated。例如。 public class MyDialogF
如果用户没有数据,我将显示一个空 fragment 。在那个 emptyFragment(在 onViewCreated)中,我检查一个条件,有时想用另一个替换那个空的 Fragment,所以我在相应
现在这对我来说是个大问题,因为我需要从接口(interface)调用方法我 viewpager 中的所有 fragment 都在实现。我需要做这样的事情: @Override public void
在此示例代码中: class MyFragment: Fragment { init { lifecycleScope.launch { whenSta
我有一个 fragment ,onViewCreated 启动了一个 AsyncTask,在后台加载一些数据,并在 onPostExecute 中将数据加载到 ArrayAdapter 以显示在 UI
我正在使用 Glide 函数从服务器响应加载图像。下面的代码在 onViewCreated 函数内正常工作,但我想创建一个 Handler 来验证互联网连接,并且我声明 Runnable作为全局变量。
我应该在 onCreateView、onViewCreated 还是 onActivityCreated 中初始化我的 recyclerview? 这 3 个之间有什么区别,我搜索了解释,但有些人说使
这两种方式的本质区别是什么?当我创建一个 TextView 时,我应该使用一个而不是另一个来提高性能吗? 编辑:有什么区别 onCreateView() { root = some view
我正在使用 Jetpack 导航在 fragment 之间导航。 我有两个 fragment UserListFragment 和 ProfileFragment。在调用服务器 API 的 UserL
在 onActivityCreated 或 onViewCreated 中观察 LiveData 是否安全,是不是在 LifecycleOwner 和多个观察者将在同一个 Fragment 中处于 A
我有两个 ViewModel。一个仅从 Fragment 使用,另一个是来自 Activity 的共享 ViewModel。 分段: @Override public void onCreate(Bu
我有两个 fragment : - 扩展 fragment 的 HomeFragment - 扩展 PreferenceFragment 的 SettingsFragment 每个都包含一个 Text
那么在 fragment 中启动 View 的最佳位置在哪里?我们知道我们应该只在 onCreate() 中扩充布局,而不是启动 View ,比如设置监听器。 You should inflate y
我知道 getView() 可能会在 onCreateView() 方法中返回 null,但即使我将下面的代码放在 onActivityCreated() 中、onStart() 或 onViewCr
我看到了一些示例,其中使用 inflate() 在 onCreateView() 中定义和使用绑定(bind),在使用 bind() 的 onViewCreated() 中定义和使用绑定(bind)。
我正在开发一个应用程序,该应用程序获取用户在 Sqlite 数据库中选择的记录的 rowid(使用 TableLayout 显示),并在另一个 fragment (DataEdit) 上显示相关记录以
我是一名优秀的程序员,十分优秀!