Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio断言不工作_Java_Android_Android Studio_Assert_Android Studio 3.1 - Fatal编程技术网

Java Android Studio断言不工作

Java Android Studio断言不工作,java,android,android-studio,assert,android-studio-3.1,Java,Android,Android Studio,Assert,Android Studio 3.1,我正在调用findViewById,Android Studio(3.1版,稳定版)提示我输入一个断言: 当我选择它时,它会在所选行的上方添加以下行: assert v!=无效 太好了。我运行应用程序,视图v为空。但是,断言不起作用,它在调试器中跳到它下面的一行: 这怎么可能呢?这是安卓工作室自己的建议,我什么也没有改变。它自己的推荐/自动生成代码不起作用。我是不是遗漏了一些明显的东西?显然,(如评论中所述)断言在默认情况下是禁用的,但Android Studio鼓励这样做 通过这种方式,“

我正在调用
findViewById
,Android Studio(3.1版,稳定版)提示我输入一个断言:

当我选择它时,它会在所选行的上方添加以下行:

assert v!=无效

太好了。我运行应用程序,
视图v
为空。但是,断言不起作用,它在调试器中跳到它下面的一行:

这怎么可能呢?这是安卓工作室自己的建议,我什么也没有改变。它自己的推荐/自动生成代码不起作用。我是不是遗漏了一些明显的东西?

显然,(如评论中所述)断言在默认情况下是禁用的,但Android Studio鼓励这样做


通过这种方式,“问题”可以被归类为误导性的用户体验问题,而不是技术问题。

没有与as合作过,所以不幸的是,我不知道linter为什么建议这样做。就我个人而言,我从不使用
assert
(和)。相反,我更喜欢显式(不可禁用)验证器,例如(在Android中可能不可用)。使用类似于
if(v==null&&BuildConfig.DEBUG)Log.e(“您的_标记”、“您的_消息”)的语句,而不是assert语句;else{mapView=v.findviewbyd(R.id.mapView);}
2。如果您知道MapView的父活动,则可以在父活动的布局根上调用findViewById。在创建活动中或之后(基本上是调用onCreate之后),您可以放心父活动的根布局永远不会为null。因此,如果(root!=null)mapView=root.findviewbyd(R.id.mapView),则不需要检查
3。您可以看看ButterKnife,它可以在编译时用Java对象映射所有必需的视图,而不必使用
findViewById
。它减少了样板文件和运行时代码。所以,如果你的项目规模适中,你可以看看Butterknife。@Raymond232谢谢,我来看看Butterknife,听起来不错。但我的主要观点是,为什么AS首先建议我采取一些在默认设置下完全不起作用的行动。