2012-06-03 2 views
0

Je crée une activité qui utilise des onglets qui peuvent également être glissés horizontalement. J'utilise aussi Actionbar Sherlock (ABS) pour la compatibilité pré-3.0.Utilisation d'une classe personnalisée avec FragmentTabsPager sous ActionbarSherlock

J'ai trouvé une bonne implémentation du FragmentTabsPager avec ABS de l'utilisateur de Stackoverflow Sparky sur http://code.google.com/p/sherlock-demo/source/browse/#git%2Fsrc%2Fcom%2Fexample%2Fandroid%2Fsherlockdemo.

Il met en place un adaptateur comme suit:

String[] mAccts; // source data for the list 

// populate mAccts with an array of Strings ... 

setListAdapter(new ArrayAdapter<String> (getActivity(), 
       R.layout.simple_list_item_checkable_1, 
       android.R.id.text1, mAccts)); 

Cela fonctionne bien si l'élément de liste est une chaîne, mais mon élément listview arrive à avoir deux cordes plus une image. J'ai donc essayé de changer le code pour travailler avec ma classe personnalisée comme suit:

ArrayList<MyItem> mItems = new ArrayList<MyItem>(); // new source data 

// populate mItems with an array of MyItems ... 

setListAdapter(new MyItemAdapter(getActivity(), R.layout.my_list, mItems)); 

Où MyItemAdapter est

public class MyItemAdapter extends ArrayAdapter<MyItem> { ... } 

MyItemAdapter comprend également une fonction getView() pour tirer les bons champs de MyItem et gonfle le my_list XML. PROBLÈME: Il semble que les changements ci-dessus devraient fonctionner, mais la classe à laquelle setListAdapter() est appelée dans l'exemple est déclarée statiquement, et MyItemAdapter appelle getSystemService(), qui n'est pas statique. Le résultat est que j'obtiens une erreur:

Cannot make a static reference to the non-static method getSystemService(String) 

J'ai essayé de rendre la fonction d'appel non statique, mais cela semble rompre l'exemple de code.

Des idées pour résoudre ce problème? J'apprécie toute aide!

Répondre

2

J'ai trouvé la réponse à mon problème. Étant donné que la classe appelante était en fait à l'intérieur d'un fragment, je devais juste changer

getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

à

getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Je suis nouveau Fragments, donc je suppose que cela est une erreur courante. Merci.

Questions connexes