Domanda Impossibile eseguire l'override di onCreateOptionsMenu in ListFragment


Ho creato un'app che supporta sia la versione per telefono che per tablet, quindi utilizzo la libreria android-support-v4.jar.

La mia attività estende ListFragment e ho provato a sovrascrivere il menu onCreateOptionsMenu (menu Menu, menuInflater inflater), come nel seguente link: http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentMenuSupport.html

In precedenza ho chiamato setHasOptionsMenu.

Sfortunatamente, sembra che non possa ignorare onCreateOptionsMenu ().

Questo è il messaggio di errore:

Il metodo onCreateOptionsMenu (Menu menu, MenuInflater inflater) di   type MyFragment deve sovrascrivere o implementare un metodo supertipo.

E l'ho fatto con:

Public class MyFragment extends ListFragment

28
2017-10-21 09:35


origine


risposte:


Assicurati che le importazioni provengano dalla libreria di compatibilità e non dall'SDK stesso.


55
2017-10-21 09:50



OK, ho appena avuto lo stesso problema, anche se non è stato risolto da ciò che è qui. Sto usando la libreria ActionBarSherlock e si scopre che onCreateOptionsMenu vuole Menu da cui partire android.support.v4.view.Menu e MenuInflater da cui partire android.view.MenuInflaterno android.support.v4.view.MenuInflater. Non chiedermi il perché. Non so se questo risolverà tutti, quindi condividerò come l'ho capito:

Fai clic con il pulsante destro del mouse sullo spazio vuoto in cui desideri che il metodo sia in Elcipse> Sorgente> Overide / Implementa metodi ...

Quindi trovalo da qui ed Eclipse importa automaticamente le cose corrette.


46
2017-11-14 22:29



Ho avuto un problema simile utilizzando SherlockActionBar sulla mia attività. Ecco la mia configurazione che risolveva il problema:

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
2017-10-15 04:20



Ho avuto lo stesso problema, ma è stato perché ho usato il metodo onCreateOptionsMenu sbagliato nel mio frammento!

booleano onCreateOptionsMenu (menu menu) è solo per le attività.

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

Dovuto spostarlo nella classe di attività che contiene il frammento.

Il frammento ha il suo: vuoto onCreateOptionsMenu (Menu Menu, MenuInflater inflater)

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

Creazione di un menu Opzioni: http://developer.android.com/guide/topics/ui/menus.html


16
2017-10-15 22:42



Ahia!!! E 'stato bello!

Ho importato android.view.Menu in MyFragment invece di android.support.v4.Menu!

Ho perso un paio d'ore su questo! Spero che questo post possa almeno aiutare qualcun altro.


6
2017-10-21 09:50



Prova questo, in realtà l'IDE ha confuso l'importazione del menu nativo di bw e l'importazione di Sherlock..so se lo specifichiamo chiaramente allora sarà risolto ..

@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
2017-11-27 16:55



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

1
2017-11-05 07:56