Android Studio中,long类型资源定义后如何编写获取代码?
获取Android中long类型资源的正确写法
嗨,针对你提到的long类型资源获取问题,我给你梳理两种实用的写法,适配不同的兼容场景:
如果你的App最低支持API 21(Android 5.0)及以上
Android从API 21开始,Resources类新增了专门的getLong()方法,直接用它就能拿到你定义的long资源,代码如下:long myLongVal = getResources().getLong(R.long.long_test);这里要注意,你用
<long>标签定义的资源,在自动生成的R文件里会被放到R.long这个静态类下,所以引用的时候要写R.long.long_test,别和int类型的R.integer搞混啦。如果需要兼容API 21以下的旧版本
早期的Android SDK里Resources没有getLong()方法,这时候可以分两种情况处理:- 要是你的long数值在int的取值范围内(也就是-231到231-1之间),可以先通过
getInteger()拿到int值,再强制转成long:long myLongVal = (long) getResources().getInteger(R.long.long_test); - 要是你的long数值超出了int的范围,建议把资源改成
<string>类型定义,再手动解析成long:<!-- res/values/strings.xml --> <string name="large_long_test">1234567890123456789</string>long largeLongVal = Long.parseLong(getResources().getString(R.string.large_long_test));
- 要是你的long数值在int的取值范围内(也就是-231到231-1之间),可以先通过
另外提个小提示:如果是在Fragment里获取资源,记得先通过requireContext().getResources()拿到Resources实例哦~
内容的提问来源于stack exchange,提问作者user3323951
相关产品推荐
相关产品推荐

