簡體   English   中英

在片段Android中保存數據

[英]Saving data in fragment android

我一直在嘗試實現與聯系人有關的某些功能。我有一個片段來顯示設備中的所有聯系人。首先,當片段實例創建時,聯系人將被提取並存儲在arraylist中,然后將其顯示在列表視圖中。 第一次獲取時,加載聯系人大約需要3-5秒,所以我放置了一個加載視圖。是否有任何方法可以保存此列表並將其保留回去,因此第二次獲取聯系人列表的速度更快。正在替換按鈕按下時的片段。這是我的代碼。

public static void replaceFragment(FragmentManager fm, int container, Fragment fragment) {
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(container, fragment);
    ft.commit();
}

並調用了活動的onCreate()

 Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());

在活動中每按一次按鈕,我都會調用此方法。

@Override
public void onClick(View v) {
    Typeface tf;
    switch (v.getId()) {
        case R.id.frag1_btn:
            Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());
            break;

        case R.id.contact_btn:
            Utils.replaceFragment(getSupportFragmentManager(),
                        R.id.container, new ContactFragment());
            break;
    }
}

我已經搜索過saveToBackStack()方法以及onsavedInstanceState(Bundle)onRetainSavedInstance() ,但是我可以在這里使用它們嗎? 還要使用這些還需要addToBackStack()方法嗎?我還是這個新手。有什么建議嗎?

當您替換Fragment時,您正在創建Fragment的新實例,那么片段以前的狀態將永遠不會恢復。

Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());

也許您可以使用2個容器,每個片段一個,而不是替換框架,而是顯示和隱藏它們。 如果這樣做,您將獲得片段的先前實例。

http://developer.android.com/reference/android/app/FragmentManager.html#findFragmentById(int)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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