在ActionbarSherlock下使用FragmentTabsPager的自定义类

时间:2012-06-03 14:50:53

标签: android tabs android-viewpager actionbarsherlock

我正在构建一个使用制表符的Activity,它也可以水平滑动。我也使用Actionbar Sherlock(ABS)来实现3.0之前的兼容性。

我在http://code.google.com/p/sherlock-demo/source/browse/#git%2Fsrc%2Fcom%2Fexample%2Fandroid%2Fsherlockdemo的Stackoverflow用户Sparky上找到了一个带有ABS的FragmentTabsPager的良好实现。

它按以下方式设置适配器:

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));

如果列表项是String,这可以正常工作,但我的listview项恰好有两个字符串加上一个图像。所以我尝试更改代码以使用我的自定义类,如下所示:

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));

MyItemAdapter的位置

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

MyItemAdapter还包含一个getView()函数,用于从MyItem中提取正确的字段并对my_list XML进行充气。

问题:看起来上述更改应该有效,但是示例中调用setListAdapter()的类是静态声明的,而MyItemAdapter调用getSystemService(),这不是静态的。结果是我收到错误:

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

我尝试使调用函数非静态,但这似乎打破了示例代码。

任何想法如何解决这个问题?我感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

我找到了问题的答案。由于调用类实际上在Fragment中,我只需要更改

getSystemService(Context.LAYOUT_INFLATER_SERVICE);

getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

我是Fragments的新手,所以我猜这是一个常见的错误。感谢。