Eu uso isso em um aplicativo que eu segmentar Android 3.0+ apenas. Eu gostaria de obter mais pessoas, mas o ActionBar não é compatível com versões anteriores. Eu não quero usar uma biblioteca de terceiros como ActionBarSherlock. Eu segui esse caminho e foi mais uma dor do que valeu a pena.
Eu tenho código assim:
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
É possível envolver isso com um if
- else
Verificação do SDK? Fora da Barra de Ação, 99% de outro código é compatível com o pré-3.0 (bem, estou usando Fragmentos, mas usando a Biblioteca de Suporte).
Respostas:
4 para resposta № 1Sim, algo assim:
@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);
}
}
Certifique-se de ter sua variável actionBar global
2 para resposta № 2
Você pode fazer algo assim:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
}
0 para resposta № 3
Sim. Eu os uso bastante extensivamente. No entanto, assista esta do Google I / O 2012, pois oferece uma boa visão sobre práticas ainda melhores.
Você pode obter a versão como um int usando Build.VERSION.SDK_INT. É fácil configurar isso:
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); }
}
-1 para resposta № 4
Outra opção é usar o ActionBarSherlock, que torna a barra de ação compatível com o Android 2.1 (SDK 7).
Link aqui: http://actionbarsherlock.com/