2013-05-20 7 views
19

Mam zakładkę + ViewPager układ iw jednej z tych zakładek mam widok listy. Kiedy zamieniam ten fragment listy na onclick, nadal widzę stary fragment pod nowym fragmentem. Zobacz:Poprzedni fragment widoczny pod nowym fragmentem

enter image description here

Kod:

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
HallsInStateFragment hallsForState = new HallsInStateFragment();   
transaction.replace(R.id.container, hallsForState); 
transaction.addToBackStack(null); 
transaction.commit(); 

gdzie R.id.container jest FrameLayout w widoku.

+0

spróbuj podać kolor bg fragmentowi zawierającemu układ –

+1

Nikt nie może ci pomóc, jeśli nie podasz kodu, którego używałeś. Nie należy również poprzedzać tytułu pytania o system Android, wystarczy tylko tag na dole. – Luksprog

+2

Upewnij się, że nie wywołujesz FragmentTransaction.add(), gdy powinieneś wywoływać FragmentTransaction.replace(). – Krylez

Odpowiedz

6

Zamiast R.id.container wstaw id tego fragmentu: ((ViewGroup)getView().getParent()).getId(). W rzeczywistości nie zastępuje fragmentu, ale poprzedni układ, np. FrameLayout. Działa to dla mnie i mam nadzieję, że zadziała również w twoim przypadku.

+3

nie zdefiniować metody getview –

+2

getId () nie zdefiniowano –

+0

getView(). getParent()). getId() żadna metoda jako taka. Proszę kliknąć link, aby uzyskać dostęp do strony: http: //stackoverflow.com/questions/16643167/previous-fragment-visible-under-the-new-fragment/42113563#42113563 – taranjeetsapra

3

Interfejs użytkownika fragmentu jest częścią hierarchii widoków działań. Jeśli więc utworzyłeś swoje widoki w metodzie onCreateView(), nadmuchasz swój układ za pomocą kontenera ViewGroup. Ten kontener przechowuje odwołania do widoków fragmentów. Spróbuj zastąpić onDestroyView() Metoda swojego fragmentu i usunąć wszystkie widoki z rodzicem:

@Override 
public void onDestroyView() { 
    //mContainer.removeAllViews(); 
    ViewGroup mContainer = (ViewGroup) getActivity().findViewById(R.id.container); 
    mContainer.removeAllViews(); 
    super.onDestroyView(); 
} 
+7

Fragment nie powinien zarządzać rodzicem, to rodzic jest odpowiedzialny za zarządzanie swoimi dziećmi . –

+1

jakie to ironiczne! – lionelmessi

0

W widoku głównym dodać clickable = true i dodać kolor tła (zarówno w formacie XML) fragmentu zastępującego bieżącego fragmentu . jej tylko fix do obejścia

-1

gdy trzeba usunąć wszystkie widoki z punktu widzenia dominującej trzeba zadzwonić removeAllViews() w pojemniku w onCreateView() metody swojego fragmentu.

Oto kod:

publicznego Zobacz onCreateView (LayoutInflater inflater, ViewGroup pojemnik, Bundle savedInstanceState) { container.removeAllViews(); // Napełnij układ dla tego fragmentu return inflater.inflate (R.layout.fragment_example, container, false); }

+0

To pytanie ma ponad 3 lata i zostało już rozwiązane – SquiresSquire

Powiązane problemy