2014-09-13 16 views
7

Jestem nowy w rozwoju Andoidów i utworzyłem fragment kodu służący do zastępowania fragmentów programowo.Jaki jest cel null w addToBackStack (null)?

Podążyłem za guide on android developers.

mam stworzyć metodę o nazwie selectFrag i wystrzelił ją na kliknięcia przycisku:

public void selectFrag(View view) 
{  
    Fragment fr;  

    if(view == findViewById(R.id.showsecond)) { 
     fr = new secondfragment(); 
    } else { 
     fr = new firstfragment(); 
    } 

    FragmentManager fm = getFragmentManager(); 

    FragmentTransaction ft = fm.beginTransaction(); 

    ft.replace(R.id.fragment_place,fr); 

    ft.addToBackStack(null); 

    ft.commit();  
} 

Kod działa doskonale i rozumiem wszystko oprócz addToBackStack(null).

Poeksperymentowałem i zrozumiałem, że ta metoda służy do dodawania fragmentu do stosu przycisku wstecz, więc jeśli klikniemy przycisk Wstecz, nie opuści ekranu i nie wyświetli poprzedniej pracy.

Ale nie rozumiem, co tutaj pokazuje null. Szukałem w Internecie, ale wiedziałem tylko, że jest to TAG i możemy użyć something like this.

Moje pytanie jest bardzo proste: Co oznacza tutaj wartość null? lub Co robi null?

(. Przepraszam za mój zły język angielski)

+0

@nem Wiem, co jest null w java, ale chcę wiedzieć, dlaczego null w addToBackStack()? jaki jest cel zerowy w "" tej "" metodzie? – xyz

Odpowiedz

14

Od documentation, to jest całkiem jasne:

public abstract FragmentTransaction addToBackStack (String name) 

Dodaj tę transakcję do tyłu stosu. Oznacza to, że transakcja zostanie zapamiętana po jej zatwierdzeniu i odwróci jej działanie po późniejszym wyrzuceniu stosu.

Parametry

name // An optional name for this back stack state, or null. 

Więc parametr jest opcjonalnyi reprezentuje nazwę fragmentu.

Jeśli chcesz tylko dodać tę transakcję do tylnego stosu i nie potrzebujesz do niej dostępu później, możesz podać jej nazwę jako null.

W tym kontekście, null w zwykłym angielskim oznacza "Nie potrzebuję nazwy dla tego fragmentu". Dlatego mówi, że nazwa jest opcjonalna. Jeśli umieścisz nazwę, możesz użyć tej nazwy później. Jeśli wstawisz null, co oznacza "dodaj ten fragment do tylnego stosu i już go nie potrzebuję".

Użycie nazwy służy do zidentyfikowania tego konkretnego fragmentu. Może to być przydatne na przykład, jeśli chcesz uzyskać ten fragment z FragmentManager:

addToBackStack (FRAGMENT_NAME); 
getFragmentMangager().findFragmentByTag(FRAGMENT_NAME); 
1

myślę, że nie powinno się używać .addToBackStack (null); Jeśli próbujesz wywołać Backstack są szanse, że może on rzucić java.lang.IllegalStateException, ponieważ nie będzie mieć prawidłowego odniesienia do Popout ostatniego dodanego elementu. To musi być sprawdzone ... Nie jestem w 100% pewny.