0

Я пытался достичь определенной функциональности, связанной с контактами. У меня есть фрагмент, который показывает все контакты в устройстве. Сначала, когда экземпляр экземпляра создаст контакты, будут извлечены и сохранены на 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() нужен метод? .. Я все еще новичок в этом. Все предложения?

ответ

0

Когда вы заменяете фрагмент, вы создаете новый экземпляр вашего фрагмента, а фрагмент предыдущего состояния никогда не будет восстановлен.

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

Может быть, вы могли бы использовать 2 контейнера, по одному для каждого фрагмента, и вместо того, чтобы заменить framents, показать и скрыть их. Если вы это сделаете, вы сможете получить предыдущий экземпляр вашего фрагмента.

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