不使用 Android 支持库时的 NavUtils 等价物?

Posted

技术标签:

【中文标题】不使用 Android 支持库时的 NavUtils 等价物?【英文标题】:Equivalent of NavUtils when not using the Android support library? 【发布时间】:2012-12-05 07:45:46 【问题描述】:

android Developers Google Group (link) 上的某个人也提出了这个问题,但没有答案...

我最近在 Eclipse 中从我的 Android 项目中删除了 v4 支持库,因为我的应用程序仅针对 Android 4.0(冰淇淋三明治)及更高版本。我现在正在查看所有给我错误的支持库引用。

特别是NavUtils,它似乎是一个用于Activity导航的支持库类。示例:

@Override
public boolean onOptionsItemSelected(MenuItem item)

    switch (item.getItemId())
    
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    
    return super.onOptionsItemSelected(item);

不使用支持库时,NavUtils 的等价物是什么?

【问题讨论】:

【参考方案1】:

查看NavUtils 的源代码,如果需要,只需将其复制到您的项目中即可。它只是获取清单中设置的父活动并启动它。

【讨论】:

还需要注意的是,在 ICS(JB 及以上)之后,所有 NavUtils 函数都已合并到 Activity 类中。如果您的目标是 API 15 及更高版本,您听起来根本不需要 NavUtils @DavidCowden 如果您的目标是 API 16 及更高版本。 15 仍然需要 NavUtils。 @DoctororDrive 是的,这是一个错字。感谢收看。【参考方案2】:

如果您不想在项目中拥有整个 android v4 支持库,我发现 @Nikolay 的方法是最好的。

这是您应该复制到项目中的类列表:

NavUtils NavUtilsJB IntentCompat IntentCompatHoneycomb IntentCompatIcsMr1

【讨论】:

【参考方案3】:

Jelly Beans 的 Android 版本已将 NavUtils 合并到 Activity 类中。

onOptionsItemSelected() 中的 case : android.R.id.home 不需要处理。 或者,对于这种情况,您可以在 onOptionsItemSelected() 中返回 false

【讨论】:

【参考方案4】:

这是我能找到的最简单的答案,以及我在代码中所做的:

简单替换:

NavUtils.navigateUpFromSameTask(this);

与:

navigateUpTo(getParentActivityIntent());

希望这会有所帮助!

【讨论】:

以上是关于不使用 Android 支持库时的 NavUtils 等价物?的主要内容,如果未能解决你的问题,请参考以下文章

使用 iOS 4.0 库时的向后兼容性

构建 Android 库时出错:不支持直接本地 .aar 文件依赖项

虹软人脸识别 - Android平台调用动态库时的常见错误解析

在构建Android库时,我可以使用什么模式来支持Activity中已配置的回调

Android使用 SO 库时要注意的一些问题

如何在ActionBar的菜单项图标之间填充使用支持库时