0

我正在构建一个使用选项卡的活动,该选项卡也可以水平滑动。我还在使用 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));

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

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)

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

任何想法如何解决这一问题?我感谢任何和所有的帮助!

4

1 回答 1

2

我找到了我的问题的答案。由于调用类实际上是在一个片段内,我只需要改变

getSystemService(Context.LAYOUT_INFLATER_SERVICE);

getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

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

于 2012-06-03T15:12:20.923 回答