gpt4 book ai didi

android - 我如何知道何时使用支持类(class)?

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:00 25 4
gpt4 key购买 nike

我是 Android 平台开发的新手,想了解我如何知道或预测何时必须使用支持类?这可能是个愚蠢的问题,但让我举个简单的例子。假设我想向我的应用程序添加共享功能,所以我转到 DAC 并在那里看到 example如何做到这一点。我仔细阅读了手册并查看了有关限制的说明,即

Note: ShareActionProvider is available starting with API Level 14 and higher

这对我来说似乎没问题,因为我的应用程序中的 minSdkVersion 设置为 14。我将该 fragment 复制粘贴到我的项目中,启动应用程序,然后...它因以下错误而崩溃:

05-21 12:42:07.638: E/AndroidRuntime(25291): java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.getActionProvider()

我更新我的源代码以使用以下代码代替我在文档中找到的代码:

MenuItem menuItem = menu.findItem(R.id.action_share);
ShareActionProvider mShareActionProvider = (ShareActionProvider)MenuItemCompat.getActionProvider(menuItem);

启动应用程序。乍一看它可以工作,但我可以在 ActionBar 中看到文本 SHARE,而不是共享图标。嗯,谷歌搜索后,我在菜单布局中替换了以下行

android:actionProviderClass="android.widget.ShareActionProvider" 

app:actionProviderClass="android.support.v7.widget.ShareActionProvider" 

万岁!我终于得到了我想要的!

这不是我在学习 Android 平台时第一次遇到这样的障碍,所以我试图找出是否有任何经验法则可以帮助我预测这种情况?

至于支持库,并不是我有意添加的。当我在 Android Studio 中创建项目时,这个库是自动添加的。在玩了一下 Android Studio 之后,我发现它会自动将它添加到项目中,除非 min SDK 设置为最新的 21 或 22 版本。所以从技术上讲,几乎所有应用程序都必须使用这个库才能在更广泛的 Android 设备上运行。如果这是真的,那么为什么 Android 培训和指南 Material 不在示例中使用支持类?

我们将不胜感激任何帮助和建议。

最佳答案

I'm trying to find whether there is any rule of thumb which will help me to predict such situations

除了您在此处引用的情况之外,我不知道还有哪些“此类情况”。

在这种特定情况下,第一步中引用的菜单资源使用 android:showAsAction="ifRoom" 而不是 app:showAsAction="ifRoom"。如果您使用 appcompat-v7 操作栏向后移植,则后者是必需的。因此,此示例不能使用 appcompat-v7 操作栏向后移植。

毫无疑问,可以在这方面改进文档,为两种操作栏实现提供说明,或者至少正面说明他们正在使用哪种操作栏实现。

So technically almost all applications have to use this library to be ran on wider range of Android devices.

没有。零个应用程序必须使用appcompat-v7才能在广泛的 Android 设备上运行,一直追溯到 API 级别 1。

但是:

  • 如果你想在运行 Android 1.x/2.x 的设备上有一个 action bar,你需要一个 action bar backport,appcompat-v7 是目前唯一维护的全功能我知道的反向移植(假定 ActionBarSherlock 已弃用)

  • 如果您想在运行 Android 4.4 及更低版本的设备上尝试使用类似于 Material Design 的 UI,appcompat-v7 的当前版本也可以做到这一点

    <

关于android - 我如何知道何时使用支持类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com