1

够简单,

操作栏的左上角是应用程序的默认图标。在大多数应用程序中,单击它会返回主页。我正在使用 2 个设备,一个 3.2 和一个 2.3.3,我正在尝试在 3.2 上实现操作栏而不影响另一个。

我想它是这样实现的:

case android.R.id.home:            
         Intent intent = new Intent(this, ActOnThisActivity.class);            
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent);            
         return true;  

最后一件事是设置标志

getActionBar().setHomeButtonEnabled(true);

这应该可以,但任何熟悉 android 的人都知道,这不能在 11 或更低的 API 上运行。所以它将在 3.2+ 上运行,但不是 2.3.3。有没有办法指定此方法仅适用于 api11 及更高版本?

请注意,@TargetApi(11) 注释可能有效,但我遇到了一些奇怪的错误。

4

3 回答 3

1

从 sdk 示例中查看ActionBarCompat将让您清楚地了解如何执行此操作。

类中的以下代码ActionBarHelper(来自示例)决定不同版本的实例。

public static ActionBarHelper createInstance(Activity activity) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        return new ActionBarHelperICS(activity);
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        return new ActionBarHelperHoneycomb(activity);
    } else {
        return new ActionBarHelperBase(activity);
    }
}
于 2012-07-19T17:28:53.233 回答
1

看看 ActionbarSherlock - 我在一些应用程序中使用它,它完美无缺。在 Honeycomb (3.0) 以下的 Android 版本中完美模仿 Action Bar。

http://actionbarsherlock.com/

几乎所有与操作栏交互的主要 API。这是getSupportActionBar()公开的确切 API。

于 2012-07-19T17:51:10.247 回答
1

有没有办法指定此方法仅适用于 api11 及更高版本?

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
  getActionBar().setHomeButtonEnabled(true);
}
于 2012-07-20T11:24:46.967 回答