android - 检查 Android 较低 api 兼容性的代码

标签 android android-studio android-support-library

我的项目 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/

相关文章:

java - 在 ListView 中删除标题的背景

java - Android Studio 是否有 NonNullByDefault 注解

android - 禁用 BottomSheet 拖动

android - 除了带有 srcCompat 的 ImageView 之外,如何使用带有 View 的矢量可绘制对象?

android - 有没有人为Pusher编写Android库?

android - 一些设备在 android 中没有收到推送通知

Android Development : On a macro-level, 我如何设计一个程序来存储和显示登录信息

android-studio - Android Studio 4.1 数据库检查器未检测到应用程序数据库

android-studio - Android Studio 错误 : occurred starting process 'command '/home/private/Android/Sdk/ndk-bundle/toolchains/mips64el-linux-android-4. 9.. .''?

android-support-library - 在 Leanback 中使用支持库中的字体