我有PreferenceFragment
,可以在Activity
内显示。但是,当我将Activity
切换为ActionBarActivity
时,不显示片段。 (我只能在下方看到一个操作栏和一个空白的白色屏幕。)我使用的主题是Theme.AppCompat.Light
,因此我需要使用ActionBarActivity
才能显示ActionBar
。< / p>
这是我的原始代码:
public class SettingsActivity extends Activity { // later changed to extend ActionBarActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content
getFragmentManager().beginTransaction().
replace(android.R.id.content, new SettingsFragment()).commit();
}
}
答案 0 :(得分:1)
我正在延长ActionBarActivity
和我的PreferenceFragment
。
我认为您需要在Activity上调用setContentView()
,以获得将加载片段的活动布局。
activity_preference_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="your.package.SettingsActivity">
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/preference_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
然后你的活动应该是这样的:
public class SettingsActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preference_layout);
getFragmentManager().beginTransaction().
replace(R.id.preference_container, new SettingsFragment()).commit();
}
}
请注意,我已将android.R.id.content
替换为R.id.preference_container
,这是上面布局中定义的框架。