编辑:如果我延长FragmentActivity
而不是ActionBarActivity
,我的布局会再次显示(当然没有ActionBar
)。
ActionBar
按预期在4.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>
活动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.+'
答案 0 :(得分:11)
在Android SDK工具目录中加载hierarchyviewer
,您在4.x设备上放置片段的视图为android.R.id.content
,在运行该设备的2.3设备上显示为R.id.action_bar_activity_content
AppCompat ActionBar库。
不幸的是,在添加片段时,您可能需要基于平台版本进行分支。这在http://code.google.com/p/android/issues/detail?id=58108中建议(尚不确定3.x设备)。
使用此方法获取添加Fragment
的正确视图。我的测试还表明,当使用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;
}