我有一个简单的Android应用程序,它创建动态列表并添加到FragmentManager。列表类是指包含合并布局的布局项。整个应用程序正在使用SherlockFragmentActivity。
现在我想在不干扰当前功能的情况下为现有FragmentManager添加一个永久页脚。
此页脚应该可用于所有页面。
有人可以帮我这么做吗?
这是on java代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fm = getSupportFragmentManager();
// Create the list fragment and add it to sole content.
if (fm.findFragmentById(android.R.id.content) == null) {
ClockListFragment list = new ClockListFragment();
fm.beginTransaction().add(android.R.id.content, list).commit();
//adding the list to the content
}
}
这里ClockListFragment是添加内容的类:
public static class ClockListFragment extends SherlockListFragment implements
LoaderManager.LoaderCallbacks<Cursor>, PauseSource {
variablesdeclarations.......
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setEmptyText(getText(R.string.no_clock_defined));
setHasOptionsMenu(true);
mAdapter = new ClockCursorAdapter(getActivity(), R.layout.world_clock_item, null, this);
setListAdapter(mAdapter);
setListShown(false);
ListView listView = getListView();
setupCabOld(listView);
registerPreferenceChanged();
if (savedInstanceState != null) {
// Restore contextual action bar state
CharSequence cab = savedInstanceState.getCharSequence(CAB);
if (cab != null) {
mMode = getSherlockActivity().startActionMode(new ModeCallback());
mMode.setTitle(cab);
mMode.invalidate();
}
}
getLoaderManager().initLoader(0, null, this);
Clocks.updateOrder(getActivity());
updateWeather(false);
}
........ other codes
}
答案 0 :(得分:1)
我有一个我的活动使用的基本布局xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_pane"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/footer_layout">
</FrameLayout>
<include layout="@layout/footer"/>
</RelativeLayout>
然后,您可以将片段添加/替换为@ + id / content_pane(framlayout)。当然,你需要一个页脚布局。
在您的示例中使用:
fm.beginTransaction().add(android.R.id.content, list).commit();
更改为fm.beginTransaction().add(R.id.content_pane, list).commit();