1

J'implémente le SherlockActionBar pour une application Android, mais je veux maintenir une rétrocompatibilité avec les appareils pré Honeycomb.ActionBarSherlock et les appareils Android 3.0 antérieurs

C'est l'exemple de code:

package com.sherlockbar.example; 

import android.os.Bundle; 
import android.support.v4.app.FragmentTransaction; 
import android.widget.TextView; 

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.ActionBar.Tab; 
import com.actionbarsherlock.app.SherlockActivity; 

public class SherlockExampleActivity extends SherlockActivity implements ActionBar.TabListener { 
    private TextView mSelected; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.tab_navigation); 
     mSelected = (TextView) findViewById(R.id.text); 

     getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     for (int i = 1; i <= 3; i++) { 
      ActionBar.Tab tab = getSupportActionBar().newTab(); 
      tab.setText("Tab " + i); 
      tab.setTabListener(this); 
      getSupportActionBar().addTab(tab); 
     } 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction transaction) { 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction transaction) { 
     mSelected.setText("Selected: " + tab.getText()); 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction transaction) { 
    } 
} 

Pour 4.0 appareils cela fonctionne parfaitement, mais pour Honeycomb il ne fonctionne pas -I obtenir l'erreur suivante:

E/AndroidRuntime(2363): Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.

Dans le manifeste, je essayé d'établir que eux, mais ce n'est pas dans la liste suggérée, plus si je l'écris, je reçois toujours l'erreur.

Comment régler la barre pour les appareils Honeycomb, s'il vous plaît?

Merci beaucoup d'avance!

+0

Affichez votre manifeste sur l'un des thèmes Sherlock configurés. – CommonsWare

+0

@CommonsWare c'est ce que j'ai: noloman

+0

Vous devriez ne pas avoir cette erreur plus avec ce manifeste. Voici un petit exemple de projet utilisant ActionBarSherlock: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo Notez que vous devrez joindre votre propre copie d'ABS en tant que projet de bibliothèque. – CommonsWare

Répondre

3

Compilez-vous contre 4.0? Vous devez cibler l'Android 4.0 SDK afin qu'il compile correctement (même si vous exécutez < 4.0).

+0

oui, voici ce que j'ai: noloman

+0

@noloman: Cela n'a rien à voir avec la suggestion. Vous devez définir la cible de génération * de votre projet sur Android 4.0+. Par exemple, dans Eclipse, vous définissez la cible de génération de votre projet via Projet> Propriétés> Android. – CommonsWare

+0

@CommonsWare J'ai 4.0.3 – noloman

1

Assurez-vous d'avoir configuré ActionBarSherlock en tant que projet de bibliothèque. Jusqu'à ce que vous faites cela, votre projet ne sera pas en mesure d'accéder aux ressources en ABS

+0

il est déjà ajouté – noloman

+0

Je voudrais vérifier que –

+0

fait mais ne fonctionne toujours pas :) – noloman

Questions connexes