Mam ListFragment w mojej MainActivity. Oto, w jaki sposób ustawiam obiekt fragmentu.Czy istnieje sposób na pobranie fragmentu z góry stosu?
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Problemem jest to, kiedy nacisnąć przycisk użytkownika z powrotem, muszę przynajmniej zmienić pasek działań i menu poprzez wywołanie
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
muszę wiedzieć, jaki rodzaj fragment pokazuje aktualnie , dzięki czemu wiem, jak ustawić pasek akcji. Przechowuję opcję ustawienia w fragmencie jako argumenty.
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
zrobić przeszukać powiązane pytanie, i zdałem sobie sprawę, mogę dostać fragment wywołując
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
Jednak muszę przechowywać wszystkie tag w niestandardowym stosu i zadzwonić pop () za każdym razem, gdy użytkownik nacisnął przycisk Wstecz w onBackPressed()
.
Moje pytanie brzmi, czy jest dla mnie sposobem na pobranie bieżącego widocznego fragmentu ze stosu bezpośrednio?
Uwaga: Proszę pamiętać, że typy fragmentów są różne, nie tylko MyFragment.
Wydaje się, że jeśli to zrobić w sposób, muszę ustawić * * fragmentTransaction.addToBackStack (tag) ** również; W przeciwnym razie uzyskałabym wyjątek NullPointerException. Więc ** fragmentManager.getBackStackEntryAt (fragmentManager.getBackStackEntryCount() - 1) .getName(); ** nie odnosi się do nazwy znacznika –
Tak ... będziesz musiał sprawdzić, czy są null i zła matematyka ((getBackStackEntryCount-1)> 0 i takie).Pisałem to zbyt szybko. Ponadto dodawanie tagów bez tagu będzie miało wartość NULL. – petey
będzie nadal działać, jeśli używam addToBackStack (null)? – umerk44