Autore Topic: Problemi con overflow menù  (Letto 603 volte)

Offline paolino1986

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc HERO
  • Sistema operativo:
    Windows 7
Problemi con overflow menù
« il: 07 Gennaio 2013, 22:17:17 CET »
0
Ciao a tutti, ho un piccolo problema con i menù. Un annetto fa sviluppai per diletto un'app per gestire i rifornimenti di carburante effettuati all'auto e la utilizzavo su un htc Hero con il bottone "fisico" per richiamare i menù. Da poco ho cambiato il telefono (nexus) e qui sorge il problema, l'overflow menù compare ma non mi crea le voci impostate nell'onCreateOptionsMenu, l'unica voce che mi compare è quella dell'activity principale (che gestisce 3 tab) generata automaticamente da eclipse alla creazione dell'activity stessa. se tolgo questo metodo da questa classe scompare anche l'overflow nonostante le fragmentActivity corrispondenti alle 3 tab hanno ancora al loro interno i loro onCreateOptionMenu (ma vengono ignorati).

Activity principale:
Codice (Java): [Seleziona]
public class MainActivity extends TabActivity {

    @SuppressWarnings("deprecation")
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   
        TabHost tabHost = getTabHost();
       
        // Tab for Photos
        TabSpec photospec = tabHost.newTabSpec("Inserisci");
        // setting Title and Icon for the Tab
        photospec.setIndicator("Inserisci", getResources().getDrawable(R.drawable.inserimento));
        Intent photosIntent = new Intent(this, Inserimento.class);
        photospec.setContent(photosIntent);
 
        // Tab for Songs
        TabSpec songspec = tabHost.newTabSpec("Prezzi");
        songspec.setIndicator("Prezzi", getResources().getDrawable(R.drawable.prezzi));
        Intent songsIntent = new Intent(this, Prezzi.class);
        songspec.setContent(songsIntent);
 
        // Tab for Videos
        TabSpec videospec = tabHost.newTabSpec("Cerca");
        videospec.setIndicator("Cerca", getResources().getDrawable(R.drawable.visualizza));
        Intent videosIntent = new Intent(this, Visualizza.class);
        videospec.setContent(videosIntent);
 
        // Adding all TabSpec to TabHost
        tabHost.addTab(photospec); // Adding photos tab
        tabHost.addTab(songspec); // Adding songs tab
        tabHost.addTab(videospec); // Adding videos tab
     }
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


classe con il menù che vorrei visualizzare:
Codice (Java): [Seleziona]
public class Visualizza extends FragmentActivity implements AlertDialogFragment.NoticeDialogListener,Data2.OnMyListFragmentItemClick
{
 private GregorianCalendar calendar;
         private int mese,anno;
       
       
         private static final int MENUITEM_COMANDO_1 = 1;
         private static final int MENUITEM_COMANDO_2 = 2;
         private static final int MENUITEM_COMANDO_3 = 3;
         private static final int MENUITEM_COMANDO_4 = 4;
         
         
         
         private static Database databaseHelper;
         private static SQLiteDatabase db;
         private DialogFragment alertDialog;
         private ListView listView;
         
         private DialogFragment newFragment;
         
       
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_visualizza);
        listView = (ListView) findViewById(R.id.arrayList);
        calendar = new GregorianCalendar();
        databaseHelper = new Database (this);
        registerForContextMenu(listView);
       
       
    }

   
    public void onResume()
    {
     super.onResume();
     getData();
     visualizzaQuestoMese();
    }
   
   
   
   
   
           
           
           
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle(R.string.titleMenu);
        menu.add(0, DELETE_ID, 0, "Cancella");
    }
   
   
   
    public boolean onContextItemSelected(MenuItem item)
    {
        switch(item.getItemId()) {
            case DELETE_ID:
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                db = databaseHelper.getReadableDatabase();
               
                databaseHelper.deleteNote(getIdToDelete(info.id), db);
                db.close();
                visualizzaQuestoMese();
                return true;
        }
        return super.onContextItemSelected(item);
    }
   
   
   
    public boolean onCreateOptionMenu(Menu menu) {
       
        super.onCreateOptionsMenu(menu);
        menu.add(Menu.NONE, MENUITEM_COMANDO_1, 1, this.getResources().getString(R.string.visualizzaTutto));
                menu.add(Menu.NONE, MENUITEM_COMANDO_2, 2, this.getResources().getString(R.string.scegliMese));
            menu.add(Menu.NONE, MENUITEM_COMANDO_4, 4,this.getResources().getString(R.string.calcolaSpese));
               
        return true;
    }
}

sapreste dirmi il perchè di questo comportamento?
grazie.

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Problemi con overflow menù
« Risposta #1 il: 29 Gennaio 2013, 23:22:29 CET »
0
Nel fragment, nel metodo onCreate manca

Codice (Java): [Seleziona]
setHasOptionsMenu(true);