我有一个 PreferenceFragment
,它可以显示在 Activity
中。但是,当我将 Activity
切换为 ActionBarActivity
时, fragment 不会显示。 (我只能在下面看到一个操作栏和一个空白的白屏。)我使用的主题是 Theme.AppCompat.Light
,因此我需要按顺序使用 ActionBarActivity
显示 ActionBar
。
这是我的原始代码:
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();
}
}
最佳答案
我正在扩展 ActionBarActivity
和我的 PreferenceFragment
工作。
我认为您需要在您的 Activity 上调用 setContentView()
,以获得将在其中加载 fragment 的 Activity 布局。
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>
那么你的 Activity 应该是这样的:
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
,这是上面布局中定义的框架。
关于android - 使用 ActionBarActivity 时不显示 PreferenceFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27815454/