我正在尝试添加片段来填充Activity的空间(实际上是ActionBarActivity,我正在使用appcombat v7),如此处的Android API指南中所示:https://developer.android.com/guide/topics/ui/actionbar.html#Tabs
因此,活动类中的相关代码如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
SomeFragment fragment = new SomeFragment();
getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, fragment, fragment.getClass().getSimpleName())
.commit();
}
}
非常标准的东西。这个编译没有任何投诉。
问题是片段根本没有出现,好像Activity没有附加任何视图。当我用XML中定义的另一个布局ID替换android.R.id.content
时,使用setContentView
和布局资源片段出现正确。
不应android.R.id.content
将片段添加到默认活动容器/视图中吗?
我是否需要为我的碎片指定一个冗余的中间容器?
答案 0 :(得分:2)
我在尝试向PreferenceFragment
添加ActionBarActivity
时添加了同样的问题:片段根本没有显示(它适用于简单的Activity
)。
我通过定义具有单帧布局的虚拟布局xml文件来解决它。然后我用onCreate
中的片段替换此布局:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(R.id.settings_layout, new SettingsFragment())
.commit();
}
activity_settings.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/settings_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</FrameLayout>