Android 夏洛克碎片中的内容
在我的班级里,我有这样一门课:Android 夏洛克碎片中的内容,android,actionbarsherlock,fragment,Android,Actionbarsherlock,Fragment,在我的班级里,我有这样一门课: class TabFactory implements TabContentFactory { private final Context mContext; public TabFactory(Context context) { mContext = context; } public View createTabContent(String tag) {
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中是如何工作的 我猜你的班级
黎巴嫩
扩展了夏洛克碎片活动
如果是这样,则出现类错误的原因是传递到AddTab()
的activity
类型是sherlockfragmentactivity
。编译器不知道您实际上正在传递leban
的实例,因此无法解析嵌套类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));
第一个解决方案显然要简单得多,并且不会在运行时抛出
ClassCastException
,因此如果可以,请选择它。我在扩展SherlockFragment而不是sherlockFragmentActivity。我发布的上述代码适用于sherlockFragmentActivity(您的第一个解决方案与我发布的解决方案相同)好的。。。因此,如果您的类leban
扩展了SherlockFragment*,您希望传递什么到AddTab()`?不,我的第一个解决方案与您的代码不同。检查参数类型。