我的项目 minSdkVersion 设置为 10。
MainActivity 是来自 support.v7.app.AppCompatActivity 的 ActionBarActivity。
默认方法 .invalidateOptionsMenu()
在 Android 2.3.7 (api10) 上崩溃,因此我必须使用兼容性方法 .supportInvalidateOptionsMenu()
;
我有一个问题:
为什么 Android Studio 没有提醒我 invalidateOptionsMenu
不适用于旧版 API?
只有在我成功构建一个 apk 并在 api10 设备上运行它并且崩溃后我才明白这一点......
如何在不进行任何实际测试的情况下进行检查?
与弹出菜单相同
如果我错误地导入 android.widget.PopupMenu
而不是 android.support.v7.widget.PopupMenu
我不会从 AndroidStudio 收到警告,提示 minSdk 设置为 10 并且 PopupMenu 将不适用于旧版 Android
最佳答案
supporting different platform versions 的 Google 文档提供了一些很好的见解。他们甚至解决了您正在处理的问题:
private void setUpActionBar() {
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
除此之外,我最好的建议是将您的目标 API 设置为您想要测试的平台,看看它是否为您提供了任何编译器级别标志,如果没有,请在模拟器中快速运行它。希望有帮助!
关于android - 检查 Android 较低 api 兼容性的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257046/