不使用 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 等价物?的主要内容,如果未能解决你的问题,请参考以下文章
构建 Android 库时出错:不支持直接本地 .aar 文件依赖项
虹软人脸识别 - Android平台调用动态库时的常见错误解析