作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要检查是否已在 ActionBarCompat
实例上设置叠加功能。 getWindow().hasFeature()
方法仅适用于 API 11 及更高版本。
如何检查 API < 11 上的功能?
编辑:根据评论,getFeatures
方法应该可以从 API 1 获得,但它是 protected 范围,我需要从另一个类访问该功能。另一方面,我需要使用的 hasFeature
方法仅适用于 API 11 及更高版本。这是 Android Studio 向我显示的内容,应用程序在 2.3.3 设备上崩溃。
仅供引用,此处使用的 Activity 类是从 ActionBarCompat 库扩展 ActionBarActivity
的自定义类。不知道这是否应该有所作为。
最佳答案
您可以使用 The Reflection API 访问私有(private)
方法.
boolean hasFeature(int feature) {
Window window = getWindow(); //get the window instance.
if (android.os.Build.VERSION.SDK_INT >= 11) { // if we are running api level 11 and later
return window.hasFeature(feature); //call hasFeature
} else {
try {
Class c = window.getClass();
Method getFeatures = c.getDeclaredMethod("getFeatures");//get the getFeatures method using reflection
getFeatures.setAccessible(true);//make it public
Integer features = getFeatures.invoke(window, null); //invoke it
return (features.intValue() & (1 << feature)) != 0; //check if we have the feature and return the result.
} catch (Exception e) {
return false;//in case invocation fails with any reason
}
}
}
关于android - API < 11 上的 getWindow().hasFeature(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925708/
我需要检查是否已在 ActionBarCompat 实例上设置叠加功能。 getWindow().hasFeature() 方法仅适用于 API 11 及更高版本。 如何检查 API = 11) {
我发现了一个奇怪的问题:无论传递给 hasFeature 函数的参数是什么,它总是返回 true。 console.log(document.implementation.hasFeature('HT
我是一名优秀的程序员,十分优秀!