Ho un ListFragment nel mio MainActivity. Ecco come ho impostato il mio oggetto frammento.C'è un modo per ottenere frammenti dall'alto dello stack?
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Il problema è quando l'utente preme di nuovo il pulsante, devo, almeno, modificare la barra delle azioni e il menu chiamando
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
devo sapere che tipo di frammento sta mostrando attualmente , così so come impostare la barra delle azioni. Memorizzo l'opzione di impostazione in frammento come argomenti.
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
faccio cercare la relativa domanda, e ho capito che potevo ottenere il frammento chiamando
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
Tuttavia, devo memorizzare tutti i tag in una pila su misura, e chiamare pop () ogni volta che l'utente ha premuto il pulsante Indietro in onBackPressed()
.
Quindi, la mia domanda è che c'è un modo per ottenere direttamente il frammento visibile corrente dallo stack?
Nota: tenere presente che i tipi di frammento sono diversi, non solo MyFragment.
Sembra che se lo faccio nel vostro senso, devo impostare * * fragmentTransaction.addToBackStack (tag) ** pure; Altrimenti, otterrei una NullPointerException. So ** fragmentManager.getBackStackEntryAt (fragmentManager.getBackStackEntryCount() - 1) .getName(); ** non si riferisce al nome dell'etichetta –
Sì ... dovrai verificare null e cattiva matematica ((getBackStackEntryCount-1)> 0 e tale).Ho scritto questo troppo velocemente. Inoltre, le frazioni aggiunte senza tag verranno considerate nulle. – petey
funzionerà ancora se uso addToBackStack (null)? – umerk44