Ho un'app con diversi frammenti.Nascondi menu opzioni su PreferenceFragment
Solo un frammento ha un menu di opzioni. Un frammento può essere avviato dal frammento B (che estende listfragment).
Quindi il frammento B non ha un menu opzioni, se seleziono qualche elemento da esso, il frammento A verrà avviato con un menu opzioni e se si torna indietro, il frammento B non ha ancora un menu opzioni.
Il problema è che se seleziono il menu Impostazioni (che estende la preferenzafragment) dal cassetto di navigazione mentre la mia finestra corrente è il frammento A, un frammento di impostazioni verrà mostrato con il menu opzioni dal frammento A. Ma se seleziono il menu Impostazioni dal cassetto di navigazione mentre la mia finestra corrente è il frammento B, C, D (senza menu opzioni) tutto funziona bene.
Frammento A:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_station, menu);
}
Impostazioni frammento:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
sharedPreferenceSettings = new SharedPreferenceSettings(getActivity());
addPreferencesFromResource(R.xml.settings);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_settings, container, false);
}
Dov'è il problema?
EDIT:
Dopo ore di debugging ho trovato una soluzione. Il problema era diverso dalla transazione fragmentManager per i frammenti. Solo per frammenti di impostazioni ho usato getSupportFragmentManager(), per altri - fragmentManager(). Questo fa sì che alcuni frammenti passino allo stack posteriore.
Non capisco il tuo quarto paragrafo, mi dispiace. È difficile seguire il flusso logico tra i frammenti e due menu. Se vuoi essere più chiaro, ti suggerisco di separare il codice/flusso logico, un flusso su una linea. Un altro, è disegnare un diagramma del flusso. –