7

Ich habe ein Fragment mit Menü:Wie kann ich das Optionsmenü in verschiedenen Fragmenten ändern?

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); 
} 

}

Ich würde menù ändern mag, aber es funktioniert nicht und hält das alte Aktionsmenü

Fragment B ist gleich wie oben ist mit verschiedene Aufblas-XML-Menü.

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); 
} 

}

EDITED:

kann nützlich sein, verschiedene Menü-Layout für verschiedene Fragmente und 1 Menü-Layout

+2

Put 'setHasOptionsMenu (true)' im Konstruktor. –

+0

Ich habe setHasOptionsMenu (true); in onCreate Fragmente. was meinst du in constructore? Ich habe keine –

+0

Überprüfen Sie die Antwort. –

Antwort

21

für Haupttätigkeit und differents id setHasOptionsMenu(true) in Konstruktor Setzen Sie zu verwenden und Fragment aufblasen bestimmtes 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); 
    } 
} 

Menü in Haupttätigkeit

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

Ich habe meine Frage bearbeitet. Es funktioniert nicht ... –

+0

das gewünschte Menü aufblasen, das Hauptmenü muss in der Hauptaktivität aufgeblasen werden und das menüspezifische Fragment muss in Fragmenten aufgebläht werden. –

+0

ich benutze Menü wie das und keine Notwendigkeit, klar zu verwenden. –