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首先建议我采取一些在默认设置下完全不起作用的行动。