[英]Handle fragment during rotation
我之前做了很多片段,但是它們都在擴展一些現有片段,現在這是一個相當臟的測試,我只是在設置列表片段及其適配器,但是我想擺脫這種煩惱,並且會想知道什么是最好的方法。
這里是我的我的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()回調的任何其他活動。
我不願意做太多復雜的事情,因為我正在測試應用程序的數據端,這只是為了快速查看數據庫/加載程序/內容提供程序是否都正常工作。 用戶界面甚至還沒有。
有任何想法嗎??
編輯:
我已經看到了一個不同的問題,使用替換而不是在片段上添加,這有點奏效,但實際上不是。 它解決了片段本身內部的所有問題,但是當我單擊返回並轉到上一個活動時,您猜得出來嗎? 活動中間有一個不確定的進度條,與這些列表片段無關。
想法? 也許我應該只將這個片段粘貼在布局xml中,但是因為經過測試,所以我避免為它們創建資源。
在ListFragment中初始化加載器不是更好嗎? 例:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new MyCursorAdapter(getActivity(), null);
setListAdapter(adapter);
getLoaderManager().initLoader(0, null, this);
}
再一次,我對這個沒用的帖子的社區感到抱歉。
先前的活動(位於后堆棧中的活動)也使用ListFragment,但我沒有注意到。 因此,先前的活動是執行.add並復制片段。 使用
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, mListFrag).commit();
所有活動都解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.