手柄片段旋转
期间我做过好几个片段,但他们都延长现有的一些片段,现在是一个非常/肮脏的测试在那里我只是设置列表片段和其适配器,但我想摆脱这正在发生的烦恼,并想知道什么是最好的方式。手柄片段旋转
这里是我的我的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中,但是因为这是测试,我正在避免为它们创建资源。
再次,我对有点儿无用后社区抱歉。
前一活动(一说是回栈上)也采用ListFragment,我没有注意到。所以之前的活动是做.add并复制这些片段。 使用
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, mListFrag).commit();
跨越ALL活动解决了这个问题。
是不是更好的初始化加载器ListFragment? 例子:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new MyCursorAdapter(getActivity(), null);
setListAdapter(adapter);
getLoaderManager().initLoader(0, null, this);
}
我真的想在不扩展的情况下使用ListFragment。而我没有看到连接。问题不在于适配器加载与否。问题是片段停留在android.R.id之上。内容事件在您离开持有它的活动之后。 – Budius