如何将使用ActionBar的应用程序从4.2降级到2.2?

时间:2013-03-01 01:54:50

标签: android android-2.2-froyo

我需要使用运行Android 2.2的HTC Legend来运行
开源nyaruka/android-sms-relay。 但是,这个应用程序的构建目标是Android 4.2。

我尝试将构建目标从4.2更改为2.2但无法编译应用程序。

我收到了以下错误:

public **ActionProvider** getActionProvider() {
        // Noop
        return null;
    }


  

无法将ActionProvider解析为类型


@Override
protected Context getActionBarThemedContext() {
         return mActivity.**getActionBar()**.getThemedContext();
    }


  

对于类型Activity

,方法getActionBar()未定义


 ImageButton actionButton = new ImageButton(mActivity, null,
                itemId == android.R.id.**home**
                        ? R.attr.actionbarCompatItemHomeStyle
                        : R.attr.actionbarCompatItemStyle);
        actionButton.setLayoutParams(new ViewGroup.LayoutParams(
                (int) mActivity.getResources().getDimension(
                        itemId == android.R.id.**home**
                                ? R.dimen.actionbar_compat_button_home_width
                                : R.dimen.actionbar_compat_button_width),
                ViewGroup.LayoutParams.FILL_PARENT));
  

家庭无法解决或不是一个领域

任何拒绝投票的人都请说明原因!

3 个答案:

答案 0 :(得分:2)

您看到此错误,因为ActionBar是Android 3中引入的新概念,并且在2.2中不可用

那里有一些Android 2.2 ActionBar samples
并且Google SDK中还有“ActionBarCompat”示例。

然而,这些可能仍需要进行一些修改才能获得 你的项目要再次编译。

更新:我刚才发现你在谈论https://github.com/nyaruka/android-sms-relay 如果自己无法使用不同的ActionBar,您可以从项目背后的社区(在github上)获得一些帮助,以使其在2.2上运行
另外......看起来他们没有使用内置的ActionBar,但是:http://actionbarsherlock.com/faq.html。我建议您查看该项目的文档。

答案 1 :(得分:0)

如果您使用的是2.2 API的新功能,那么您不能只降级构建目标。 如上所述,您必须使用另一个操作栏,因为该API不可用。 你可以在这里看到android 2.2是API 8 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

答案 2 :(得分:0)

使用Android兼容库获取Android 2.2中的Action Bar,它也适用于Android 3.0以上。