0

我之前完成了很多片段,但它们都在扩展一些现有片段,现在这是一个相当/肮脏的测试,我只是设置列表片段及其适配器,但我想摆脱正在发生的这种烦恼并且会想知道什么是最好的方法。

这是我的 FragmentActivity 的 onCreate:

    @Override
    protected void onCreate(Bundle savedInstances) {
    super.onCreate(savedInstances);
    mListFrag = new ListFragment();
    getSupportFragmentManager().beginTransaction().add(android.R.id.content, mListFrag).commit();
    getSupportLoaderManager().initLoader(13, null, this).forceLoad();
    }

简单的东西,实例化一个新的 ListFragment,将它添加为我的活动的主框架并启动我的光标加载器。

在游标加载器上,完成后:

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    if (mAdapter == null) {
        mAdapter = getCallLogCursorAdapter(cursor);
        mListFrag.setListAdapter(mAdapter);
    } else {
        Cursor oldCursor = mAdapter.swapCursor(cursor);
        if (oldCursor != null)
        oldCursor.close();
    }
    }

再次,简单的东西,如有必要,创建一个适配器,如果不是我只是交换光标。

所有这些在第一次运行时都可以正常工作,但是当我旋转设备时,我得到了旋转列表以及视图中间的进度条。似乎不知何故有两个碎片一个在另一个之上。我试着mListFrag.setRetainInstance(true);让它不显示进度条,但仍然有两个片段一个在另一个之上,一个接收滚动列表的触摸,另一个保持静态。

我没有覆盖任何其他活动 onSomething() 回调。

我不会费心做太多复杂的方法,因为我正在测试应用程序的数据端,这只是为了快速查看数据库/加载器/内容提供程序是否都工作正常。UI甚至还没有。

有任何想法吗??

编辑:

我看到了一个不同的问题,使用替换而不是在片段上添加,它有点工作但不是真的。它解决了片段本身内部的所有问题,但是当我单击返回并转到上一个活动时,你猜?不确定的进度条位于与这些列表片段无关的活动中间。

想法?也许我应该将这个片段粘贴到布局 xml 中,但因为它是测试,所以我避免为它们创建资源。

4

2 回答 2

0

在ListFragment中初始化加载器不是更好吗?例子:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    adapter = new MyCursorAdapter(getActivity(), null);
    setListAdapter(adapter);
    getLoaderManager().initLoader(0, null, this);
}
于 2012-08-31T21:31:27.850 回答
0

再一次,我为这个没用的帖子上的社区感到抱歉。

上一个活动(在后台堆栈上的那个)也使用了 ListFragment,我没有注意到。所以之前的活动是进行 .add 和复制片段。使用

  getSupportFragmentManager().beginTransaction().replace(android.R.id.content, mListFrag).commit();

所有活动中解决了这个问题。

于 2012-09-05T15:05:29.083 回答