Скользящее меню поListItemClick переход к предыдущим фрагментам без воссоздания нового

В настоящее время я использую библиотеку скользящих меню Android из https://github.com/jfeinstein10/SlidingMenu. Это здорово, но я понятия не имею, как переключаться без воссоздания нового фрагмента.

У меня есть два фрагмента с именами A, B. Список меню: пункт A, пункт B.

Я следовал руководству, и в onListItemClick у меня есть:

public void onListItemClick(ListView l, View v, int position, long id){
    Fragment newContent = null;
    switch (position) {
      case 0:
        newContent = new FragmentA();
        break;
      case 1:
        newContent = new FragmentB();
        break;
}

Как видите, когда я нажимаю на ItemA/ItemB, создается новый фрагмент A/B. Как я могу этого избежать? Как я могу перейти к любому фрагменту, не воссоздавая новый? Вместо этого он направит к старым фрагментам. Заранее спасибо.


person Shumin    schedule 15.09.2014    source источник
comment
вам нужно понять backstack для этого, вам лучше прочитать статью и сделать это самостоятельно, а не я буду писать код для вас, если у вас возникнет путаница после этого, оставьте комментарий, я помогу developer.android.com/training/implementing-navigation/   -  person Techfist    schedule 15.09.2014
comment
Привет, спасибо за быстрый ответ. Я читал это раньше. Я запутался, как перейти непосредственно к нужным фрагментам, которые я впервые создал. На данный момент два фрагмента были созданы после запуска приложения. Затем я переключаю меню и нажимаю на ItemB, который перейдет к фрагменту B без его повторного создания. Кроме того, если я нажму на ItemA, он направит к предыдущему фрагменту A. Можете ли вы объяснить это ясно? Ценить!   -  person Shumin    schedule 15.09.2014


Ответы (1)


Используйте шаблон newInstance, используемый в документации Android, и переопределите поведение метода newInstance по умолчанию:

private static MyFragment instance;

public static MyFragment getInstance(String p1, String p2) {
    if( instance == null ) {
        MyFragment fragment = new MyFragment();
    }
    Bundle args = new Bundle();
    args.putString(ARG_1, p1);
    args.putString(ARG_2, p2);
    fragment.setArguments(args);
    return fragment;
}

а затем каждый раз, когда вам нужно отобразить этот фрагмент, просто вызовите MyFragment.getInstance("","").

person Ali Behzadian Nejad    schedule 15.09.2014