2015-02-05 4 views
1

У меня есть 4 фрагмента, а именно A B C D. Теперь, когда я больше от A до B, я добавляю A в задний стек. , чем я перехожу от B к C, не добавляя обратно в стек. , чем я перехожу из C в D, не добавляя обратно в стек. сейчас на заднем прессе. Я перенаправлен на A.андроидный фрагмент backpress

Снова повторяю до D, и теперь, когда я снова нажимаю, он отображает фрагмент A и снова перенаправляет меня на фрагмент D и снова нажимает Back, он выходит из приложения.

Я хочу, чтобы это было как на задней прессе от D всегда должен получить меня к

может кто-нибудь помочь?

здесь код https://drive.google.com/folderview?id=0Bwt5u0ivqfvPSmxNN0V4YkNKa1U&usp=sharing

Я получаю это в LogCat

02-06 13: 31: 19,395 26930-26930/com.example.user.fragmentbackstackexample I/dalvikvm: Не удалось найти метод android.view.ViewGroup.isTransitionGroup, ссылки из метода android.support.v4.app.FragmentTransitionCompat21.captureTransitioningViews

02-06 13: 31: 19.395 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm : VFY: невозможно разрешить виртуальный метод 11 340: Landroid/view/ViewGroup; .ISTransitionGroup() Z

02-06 13: 31: 19.395 26930-26930/com.example.user.fragmentbackstackexample I/dalvikvm: Не удалось найти метод android.view.View. getTransitionName, ссылки из метода android.support.v4.app.FragmentTransitionCompat21.findNamedViews

02-06 13: 31: 19,395 26930-26930/com.example.user.fragmentbackstackexample Вт/dalvikvm VFY: не в состоянии разрешить виртуальный метод 11182: Landroid/view/View; .getTransitionName() Ljava/lang/String;

02-06 13: 31: 19.405 26930-26930/com.example.user.fragmentbackstackexample I/dalvikvm: Не удалось найти метод android.view.View.getTransitionName, на который ссылается метод android.support.v4.app. FragmentTransitionCompat21.getTransitionName

02-06 13: 31: 19,405 26930-26930/com.example.user.fragmentbackstackexample Вт/dalvikvm VFY: не в состоянии решить виртуальный метод 11182: Landroid/вид/вид; .getTransitionName() Ljava/языки/String;

02-06 13: 31: 19.415 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: невозможно разрешить суперкласс из Landroid/support/v4/app/FragmentTransitionCompat21 $ 1; (1303)

02-06 13: 31: 19.415 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: Ссылка на класс 'Landroid/support/v4/app/FragmentTransitionCompat21 $ 1;' не удалось

02-06: 13: 31: 19,415 26930-26930/com.example.user.fragmentbackstackexample E/dalvikvm: Не удалось найти класс 'android.support.v4.app.FragmentTransitionCompat21 $ 1', ссылочных от метода андроида .support.v4.app.FragmentTransitionCompat21.setEpicenter

02-06 13: 31: 19,425 26930-26930/com.example.user.fragmentbackstackexample Вт/dalvikvm VFY: не в состоянии разрешить новым инстанциям 294 (Landroid/support/v4/app/FragmentTransitionCompat21 $ 1;) в Landroid/support/v4/app/FragmentTransitionCompat21;

02-06 13: 31: 19.425 26930-26930/com.пример.user.fragmentbackstackexample W/dalvikvm: невозможно разрешить суперкласс из Landroid/support/v4/app/FragmentTransitionCompat21 $ 3; (1303)

02-06 13: 31: 19.425 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: Ссылка на класс 'Landroid/support/v4/app/FragmentTransitionCompat21 $ 3;' не удалось

02-06: 13: 31: 19.435 26930-26930/com.example.user.fragmentbackstackexample E/dalvikvm: Не удалось найти класс 'android.support.v4.app.FragmentTransitionCompat21 $ 3', ссылки из метода андроида. support.v4.app.FragmentTransitionCompat21.setSharedElementEpicenter

02-06 13: 31: 19,435 26930-26930/com.example.user.fragmentbackstackexample Вт/dalvikvm VFY: не в состоянии разрешить новый экземпляр-296 (Landroid/поддержка/v4/app/FragmentTransitionCompat21 $ 3;) в Landroid/support/v4/app/FragmentTransitionCompat21;

02-06 13: 31: 19.435 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: невозможно разрешить суперкласс Landroid/support/v4/app/FragmentTransitionCompat21 $ 1; (1303)

02-06 13: 31: 19.435 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: Ссылка на класс 'Landroid/support/v4/app/FragmentTransitionCompat21 $ 1;' не удалось

02-06 13: 31: 19.445 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: невозможно разрешить суперкласс из Landroid/support/v4/app/FragmentTransitionCompat21 $ 3; (1303)

02-06 13: 31: 19.445 26930-26930/com.example.user.fragmentbackstackexample W/dalvikvm: Ссылка на класс 'Landroid/support/v4/app/FragmentTransitionCompat21 $ 3;' потерпел неудачу

+0

Это трудно сказать, не видя код ... –

+0

@KirillVolkov пожалуйста, проверьте код – user3237043

+1

Это просто дает весь ваш источник code.Please вставить соответствующие биты здесь, – Droidekas

ответ

0

ли это .. Для фрагмента А это сделать ..

getSupportFragmentManager().beginTransaction() 
       .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A") 
       .commit(); 

Для других фрагментов просто не использовать addToBackStack (..)

Теперь вы всегда будете возвращаться к фрагменту A, когда вы отжимаете назад от других фрагментов.

UPDATE:

В вашем MainActivity.java это сделать ..

getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit(); 

И в ваших FragmentA.java это сделать ..

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      setFragment(new FragmentB()); 
     } 
    }); 
} 

FINAL UPDATE:

Самый простой подход для достижения вашего желания.

В вашем MainActivity.java это сделать ..

public String TAG = ""; 

@Override 
public void onBackPressed() { 
    if (TAG.equals("FragmentD")) { 
     getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit(); 
    }else{ 
     super.onBackPressed(); 
    } 
} 

И в каждый фрагмент сделать это ..

MainActivity mainActivity; 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    mainActivity = (MainActivity) activity; 
    mainActivity.TAG = getClass().getSimpleName(); 
} 

Надежда это helps.Thanks !!; D

+0

Я сделал это только ... проверьте код user3237043

+0

Проверьте обновление – Sjd

+0

Если вы добавляете только фрагмент A в стопку, вы можете восстановить фрагмент Только. –

0

Просто удалите super.onBackPressed(); из ваших кодов

Смежные вопросы