在我的班级黎巴嫩,我有这个课程:
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中是如何工作的?!
答案 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));
,所以如果可以,请选择。