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