无法管理ActionBarSherlok和反向兼容性

时间:2013-10-16 21:27:26

标签: android android-fragments actionbarsherlock

我正在延长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)

这是因为DetailsS​​erviceListFragment需要扩展Fragment。但为什么我不能延长SherlockListFragment

当我使用Sherlok项目中包含的类时,我必须使用Fragment?

3 个答案:

答案 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 SherlockListFragmentSherlockListFragment已经扩展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