7

Ho un Frammento con menù:come posso cambiare il menu delle opzioni in diversi frammenti?

public class FragmentA extends Fragment { 

public FragmentA() { 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.activity_main_actions, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

}

vorrei cambiare menù ma non funziona e mantenere il vecchio menu Azione

frammento B è uguale come sopra con diversi gonfia il menu xml.

public class FragmentB extends Fragment { 

public FragmentB() { 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.**action_ranking**, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

}

Modificato:

può essere utile utilizzare diversi layout dei menu per i diversi frammenti e 1 il layout del menu per l'attività principale e id differenti

+2

Put 'setHasOptionsMenu (vero)' nel costruttore. –

+0

Ho setHasOptionsMenu (true); nei frammenti onCreate. cosa intendi inserire nel constructore? Non ne ho uno –

+0

Controlla la risposta. –

risposta

21

Mettere setHasOptionsMenu(true) nel costruttore e gonfiare frammento menu specifico. menù

public class FragmentA extends Fragment { 

    public FragmentA() { 
     setHasOptionsMenu(true); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     setHasOptionsMenu(true); 
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.fragmenta_menu, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
} 

in attività principale

public class MainActivity extends Activity { 
    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.main_menu, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
} 
+0

ho modificato la mia domanda. Non funziona ... –

+0

gonfia il menu desiderato, il menu principale deve essere gonfiato nell'attività principale e il menu specifico per i frammenti deve essere gonfiato in frammenti. –

+0

ho usato un menu simile e non ho bisogno di usare chiaro. –