SherlockFragment中的setContent

时间:2013-08-05 19:47:55

标签: android actionbarsherlock fragment

在我的班级黎巴嫩,我有这个课程:

class TabFactory implements TabContentFactory {

        private final Context mContext;

        public TabFactory(Context context) {
            mContext = context;
        }

        public View createTabContent(String tag) {
            View v = new View(mContext);
            v.setMinimumWidth(0);
            v.setMinimumHeight(0);
            return v;
        }

    }

这是错误:

private static void AddTab(
        SherlockFragmentActivity activity, TabHost tabHost,
        TabHost.TabSpec tabSpec, TabInfo tabInfo) {
    // TODO Auto-generated method stub

    tabSpec.setContent(activity.new TabFactory(activity));

这里实际上我有这个错误:

SherlockFragmentActivity.TabFactory cannot be resolved to a type

我知道这种方法适用于SherlockFragmentActivity,但它在SherlockFragment中是如何工作的?!

1 个答案:

答案 0 :(得分:0)

我猜你的班级Lebanon扩展了SherlockFragmentActivity

如果是这样,您收到类错误的原因是因为传递给activity的{​​{1}}类型是AddTab()。编译器不知道您实际上是在传递SherlockFragmentActivty的实例,因此无法解析嵌套类Lebanon。因此错误!

有两种解决方案。首先,您可以修改TabFactory签名以获取子类,例如

AddTab()

另一种方法是保持签名相同,但在活动中添加一个演员,即

private static void AddTab(
    Lebanon activity, TabHost tabHost,
    TabHost.TabSpec tabSpec, TabInfo tabInfo) {

    tabSpec.setContent(activity.new TabFactory(activity));

    // ... other code
}

第一个解决方案显然要简单得多,并且不会冒险在运行时抛出tabSpec.setContent(((Lebanon) activity).new TabFactory(activity)); ,所以如果可以,请选择。