【问题标题】:Equivalent of NavUtils when not using the Android support library?不使用 Android 支持库时的 NavUtils 等价物?
【发布时间】: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 的等价物是什么?

【问题讨论】:

    标签: android navigation android-4.0-ice-cream-sandwich android-version android-support-library


    【解决方案1】:

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

    【讨论】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        简单替换:

        NavUtils.navigateUpFromSameTask(this);
        

        与:

        navigateUpTo(getParentActivityIntent());
        

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 2013-02-18
          • 1970-01-01
          • 2013-12-12
          • 2012-03-17
          • 2014-07-28
          • 1970-01-01
          • 1970-01-01
          • 2018-05-18
          • 1970-01-01
          相关资源
          最近更新 更多