Android动作栏回家

时间:2012-07-19 17:15:49

标签: java android annotations android-actionbar

很简单,

操作栏的左上角是应用程序的默认图标。在大多数应用中,它会被点击并返回主页。我正在使用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)注释可能有效,但我有一些奇怪的错误。

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

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

http://actionbarsherlock.com/

  

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

答案 2 :(得分:1)

  

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

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
  getActionBar().setHomeButtonEnabled(true);
}