如何在Android现有应用程序上添加一个简单的页面

时间:2014-02-10 20:29:52

标签: android android-layout android-listview android-fragments android-context

我有一个简单的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
}

1 个答案:

答案 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)。当然,你需要一个页脚布局。

在您的示例中使用:

  1. 添加setContentView(R.layout.base);你的活动onCreate-method。
  2. fm.beginTransaction().add(android.R.id.content, list).commit();更改为fm.beginTransaction().add(R.id.content_pane, list).commit();