wake-up-neo.net

OnCreateOptionsMenu in ListFragment kann nicht überschrieben werden

Ich habe eine App erstellt, die sowohl die Telefon- als auch die Tablet-Version unterstützt. Daher verwende ich die Android-support-v4.jar-Bibliothek. 

Meine Aktivität erweitert das ListFragment und ich habe versucht, das onCreateOptionsMenu (Menümenü, MenuInflater inflater) wie folgt zu überschreiben: http://developer.Android.com/resources/samples/Support4Demos/src/com/example/ Android/supportv4/app/FragmentMenuSupport.html

Ich habe vorher setHasOptionsMenu genannt.

Leider scheint es, dass ich onCreateOptionsMenu () nicht überschreiben kann.

Dies ist die Fehlermeldung:

Die Methode onCreateOptionsMenu (Menu menu, MenuInflater inflater) von type MyFragment muss eine Supertyp-Methode überschreiben oder implementieren.

Und das habe ich mit gemacht:

Public class MyFragment extends ListFragment
28
Waza_Be

Stellen Sie sicher, dass die Importe aus der Kompatibilitätsbibliothek und nicht aus dem SDK selbst stammen.

55
Maria Neumayer

OK, ich hatte gerade das gleiche Problem, obwohl es durch das, was hier ist, nicht behoben wurde. Ich verwende die ActionBarSherlock-Bibliothek und es stellt sich heraus, dass onCreateOptionsMenu möchte, dass Menu aus Android.support.v4.view.Menu und MenuInflater aus Android.view.MenuInflater und nicht Android.support.v4.view.MenuInflater stammt. Frag mich nicht warum. Ich weiß nicht, ob das alle reparieren wird, also erzähle ich, wie ich es herausgefunden habe:

Klicken Sie mit der rechten Maustaste auf die leere Stelle, an der Sie die Methode in Elcipse> Source> Overide/Implement-Methoden haben möchten.

Dann finden Sie es von hier aus und Eclipse importiert automatisch die korrekten Dinge.

47
Weston

Ich hatte ein ähnliches Problem mit der SherlockActionBar bei meiner Aktivität. Hier war mein Setup, das das Problem behoben hat:

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class LoginActivity extends SherlockActivity {

...
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_login, menu);
        return true;
    }

...


}
26
Chris Smith

Hatte das gleiche Problem, aber es war, weil ich in meinem Fragment die falsche Methode onCreateOptionsMenu verwendet habe!

boolean onCreateOptionsMenu (Menümenü) ist nur für Aktivitäten.

@Override //For Activities
public boolean onCreateOptionsMenu(Menu menu) { 
...

Musste es in die Aktivitätsklasse verschieben, die das Fragment enthält.

Fragment hat seine eigenen: void onCreateOptionsMenu (Menü Menü, MenuInflater inflater)

@Override //For Fragments.
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
...

Erstellen eines Optionsmenüs: http://developer.Android.com/guide/topics/ui/menus.html

16
TouchBoarder

Autsch!!! Der war gut!

Ich habe Android.view.Menu in MyFragment anstelle von Android.support.v4.Menu importiert!

Ich habe ein paar Stunden bei diesem verloren! Hoffe, dieser Beitrag kann wenigstens jemandem helfen.

7
Waza_Be

Versuchen Sie Folgendes: IDE hat das bw native Menüimport und den Sherlock-Import verwirrt. Wenn wir dies eindeutig angeben, wird es behoben. 

@Override
    public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
            com.actionbarsherlock.view.MenuInflater inflater) {

}

@Override
    public boolean onOptionsItemSelected(
            com.actionbarsherlock.view.MenuItem item) {
        // TODO Auto-generated method stub

}
2
Bala Vishnu
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    // TODO Auto-generated method stub
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}
1
RZMars

Hatte gerade das gleiche Problem in einer Aktivität auf Xamarin . Es wurde erwartet, dass die Methode Xamarin.ActionbarSherlockBinding.Views.IMenu als Argument verwendet.

So finden Sie es heraus: - Kommentieren Sie die OnCreateOptionsMenu-Methode. Sie haben mit der Implementierung von .- begonnen. In einigen Arbeitsmethoden sollten Sie OnCreateOptionsMenu eingeben, wie Sie es aufrufen möchten .- Wählen Sie es aus der Vorschlagsliste . -Stellen Sie den Cursor auf den Aufruf OnCreateOptionsMenu .- Drücken Sie die Tastenkombination Befehlstaste + d, um zum Assembly-Browser zu gelangen. Sie sehen die Schnittstelle ab Implementierung .- Durch Drücken des Mauszeigers auf den erforderlichen Parametertyp gelangen Sie zur Schnittstelle dieser Typimplementierung .- und Sie sehen den Namespace, in dem sie sich befindet.

0
EdgarK

Ich hatte das gleiche Problem und das, was ich mit onCreateOptionsMenu of Fragment ... getan habe. Überschreiben Sie die onCreate-Methode des Fragments und stellen Sie sicher, dass Sie die setHasOptionsMenu-Methode mit dem Parameterwert "true" verwenden, um das System wissen zu lassen, dass Fragment OptionsMenu verwendet.

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

Überschreiben Sie dann onCreateOptionsMenu, um Ihre Menü-XML-Datei aufzublasen (hier in diesem Beispiel habe ich fragmentmenu.xml aufgeblasen

@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.fragmentmenu, menu);
}
0
Debashis