AppCompat操作栏库不显示添加的片段

编辑 :如果我扩展FragmentActivity而不是ActionBarActivity我的布局再次出现(当然没有一个ActionBar )。

ActionBar4.x设备上按预期工作,但在我的2.3设备上,我所得到的是ActionBar和它下面的空白屏幕Fragment似乎没有被添加到Activity

的themes.xml

 <style name="AppTheme" parent="AppBaseTheme"> <item name="actionBarStyle">@style/Widget.ActionBar</item> </style> 

主题-v11.xml

 <style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarStyle">@style/Widget.ActionBar</item> </style> 

styles.xml

 <style name="Widget.ActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:background">@color/actionbar_background</item> <item name="background">@color/actionbar_background</item> </style> 

Activity onCreate()

 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); myFragment = new WallFragment(); fragmentTransaction.add(android.R.id.content, myFragment, myFragment.FRAGMENT_TAG); fragmentTransaction.commit(); 

我正在使用Gradle将AppCompat ActionBar库包含在我的应用程序中。

 compile 'com.android.support:appcompat-v7:18.0.+' 

Solutions Collecting From Web of "AppCompat操作栏库不显示添加的片段"

在Android SDK的工具目录中加载hierarchyviewer ,看起来放置碎片的视图是4.x设备上的android.R.id.content ,在2.3运行AppCompat ActionBar库的设备上是R.id.action_bar_activity_content

不幸的是,在添加片段时,您可能需要基于平台版本进行分支。 这是在http://code.google.com/p/android/issues/detail?id=58108 (不确定关于3.x设备)中build议的。

使用这种方法来获得添加Fragment的正确视图。 我的testing还显示,使用AppCompat ActionBar库时,3.x设备的行为类似于2.3设备。

 public static int getContentViewCompat() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ? android.R.id.content : R.id.action_bar_activity_content; } 

hierarchyviewer截图

  • 2.3

2.3

  • 4.x版

4.x版