0

我在仅针对 Android 3.0+ 的应用程序中使用它。我想吸引更多人,但 ActionBar 不向后兼容。我不想使用像 ActionBarSherlock 这样的第三方库。我沿着那条路走下去,这比它更值得。

我有这样的代码:

final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);

可以用if- elseSDK 检查来包装它吗?在操作栏之外,99% 的其他代码与 3.0 之前的版本兼容(好吧,我使用的是片段,但使用的是支持库。)

4

4 回答 4

4

是的,像这样:

      @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        private void setupActionBar() {
              if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                 actionBar = getActionBar();
                 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
                 actionBar.setDisplayHomeAsUpEnabled(true); 
                }           
        }

确保你的 actionBar 变量是全局的

于 2012-12-19T00:33:00.210 回答
2

你可以这样做:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
于 2012-12-19T00:34:37.653 回答
0

是的。我非常广泛地使用它们。但是,请务必从 Google I/O 2012 观看内容,因为它可以很好地洞察更好的实践。

您可以使用 Build.VERSION.SDK_INT 以 int 形式获取版本。设置它很容易:

final int version = Build.VERSION.SDK_INT;
ActionBar actionBar;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
    private void ABsetup() {
        if (version >= Build.VERSION_CODES.HONEYCOMB) {
            actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);          }
    }
于 2012-12-19T00:40:08.330 回答
-1

另一种选择是使用 ActionBarSherlock,它使操作栏重新兼容 android 2.1 (SDK 7)。

链接在这里:http ://actionbarsherlock.com/

于 2012-12-19T00:35:05.650 回答