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(); 
    } 
    } 

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

所有这一切工作正常,在第一次运行,但是当我旋转设备,我得到了旋转列表,以及对我的看法中间的进度条。看起来好像有两个片段在另一个之上。我试着让mListFrag.setRetainInstance(true);它不会显示进度条,但是仍然有两个片段在另一个之上,一个接收触摸滚动浏览列表,另一个保持静态。

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

我没有打扰做太多复杂的方式,因为我正在测试的应用程序中的数据端,这只是以快速查看是否数据库/装载机/内容提供商都在正常工作。 UI甚至没有。

任何想法??

编辑:

我已经看到了不同的问题,以使用替换而不是增加对片段和它种工作,但不是真的。它解决了片段本身的所有问题,但是当我点击回到前一个活动时,猜测?不确定的进度条就在与这些列表片段无关的活动的中间。

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

回答

0

再次,我对有点儿无用后社区抱歉。

前一活动(一说是回栈上)也采用ListFragment,我没有注意到。所以之前的活动是做.add并复制这些片段。 使用

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

跨越ALL活动解决了这个问题。

0

是不是更好的初始化加载器ListFragment? 例子:

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    adapter = new MyCursorAdapter(getActivity(), null); 
    setListAdapter(adapter); 
    getLoaderManager().initLoader(0, null, this); 
} 
+0

我真的想在不扩展的情况下使用ListFragment。而我没有看到连接。问题不在于适配器加载与否。问题是片段停留在android.R.id之上。内容事件在您离开持有它的活动之后。 – Budius