簡體   English   中英

旋轉過程中處理碎片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM