我正在延长SherlockFragmentActivity
。当我检查元素this.getFragmentManager()
时,我获得了以下描述。
FragmentManager android.app.Activity.getFragmentManager()
public FragmentManager getFragmentManager ()
Added in API level 11
Return the FragmentManager for interacting with fragments associated with this activity.
这意味着我只能将它用于11级或更高级别的API。
事实上,以下代码给出了一个错误:
android.app.FragmentManager fragmentManager = this.getFragmentManager();
android.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
DetailsServiceListFragment fragment = new DetailsServiceListFragment();
fragmentTransaction.add(R.id.dettservizio,fragment);
其中DetailsServiceListFragment
扩展SherlockListFragment
错误在第四行,并说:
The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, DetailsServiceListFragment)
这是因为DetailsServiceListFragment需要扩展Fragment。但为什么我不能延长SherlockListFragment
?
当我使用Sherlok项目中包含的类时,我必须使用Fragment?
答案 0 :(得分:0)
您应该使用getSupportFragmentManager()
方法。 android.app.*
片段相关类仅适用于API 11+,如您所述。
android.support.v4.app.FragmentManager fragmentManager = this.getFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
DetailsServiceListFragment fragment = new DetailsServiceListFragment();
fragmentTransaction.add(R.id.dettservizio,fragment);
另外,不要忘记提交FragmentTransaction
fragmentTransaction.commit();
DetailsServiceListFragment extends SherlockListFragment
,SherlockListFragment
已经扩展android.support.v4.app.Fragment
,所以没关系,保持原样。
答案 1 :(得分:0)
您需要在Fragment
旁边使用android.support.v4.app.Fragment
(即getSupporFragmentManager()
)的支持库版本。如果需要,您现在可以使用Android自己的ActionBar反向端口。
答案 2 :(得分:0)
目前,我建议使用ActionBarCompat库(它是官方Google支持库 - 版本7的一部分)。
他们花了很长时间来创建一个向后兼容的Actionbar,但现在它已经存在,你应该使用它而不是ActionBarSherlock。
以下是API:http://developer.android.com/reference/android/support/v7/app/ActionBar.html
...还有一个很好的介绍:https://plus.google.com/108967384991768947849/posts/9Tw5zZvAGnq