我在 Drawer 的内容框架中使用带有 NavigationDrawer 和 ListView 的 ActionBarActivity。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/lyt_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="horizontal" >
<ListView
android:id="@+id/list_notes"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1" >
</ListView>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/drawer_frame"
android:layout_width="240dp"
android:layout_height="fill_parent"
android:layout_gravity="start"
android:layout_weight="1" >
<ListView
android:id="@+id/left_drawer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/darkGray"
android:choiceMode="singleChoice"/>
</FrameLayout>
我从这样的抽屉项目之一打开 PreferenceFragment :
FragmentTransaction transaction = getFragmentManager().beginTransaction();
PrefsFragment prefs = new PrefsFragment();
transaction.add(R.id.content_frame, prefs);
transaction.addToBackStack(null);
transaction.commit();
这是我的 PrefsFragment:
public class PrefsFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new PrefsFr())
.commit();
}
public class PrefsFr extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
... }
}
}
但我无法删除这个片段。当我切换到另一个抽屉项目时;PreferenceFragment 保留在 content_frame 中的 ListView 顶部,具有 tranceparent 背景。
是否可以在 ActionBarActivity 中删除一个片段而不用另一个片段替换它?如果不是这样,如何将 PreferenceFragment 用于 api > 11 ?唯一的方法是互相替换片段,这是真的吗?