2013-05-13 3 views
0

je veux montrer mon menu avec barre d'action, mais mon menu ne s'affiche, voici mon code source:Option Menu n'affichera

public class EpolicyMainActivity extends TabActivity { 
/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    //hide title bar 
    BasicDisplaySettings.toggleTaskBar(EpolicyMainActivity.this, false); 
    //show status bar 
    BasicDisplaySettings.toggleStatusBar(EpolicyMainActivity.this, true); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    // Create an Intent to launch an Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, LoginActivity.class); 
    spec = tabHost.newTabSpec("Login").setIndicator("", 
       res.getDrawable(R.drawable.epolicy_menu_xml_home)) 
       .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, NABActivity.class); 
    spec = tabHost.newTabSpec("NAB").setIndicator("", 
       res.getDrawable(R.drawable.epolicy_menu_xml_nab)) 
       .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, ContactActivity.class); 
    spec = tabHost.newTabSpec("Contact").setIndicator("", 
       res.getDrawable(R.drawable.epolicy_menu_xml_contact)) 
       .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, AgenActivity.class); 
    spec = tabHost.newTabSpec("Agen").setIndicator("", 
       res.getDrawable(R.drawable.epolicy_menu_xml_agen)) 
       .setContent(intent); 
    tabHost.addTab(spec); 

    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++){ 
     tabHost.getTabWidget().getChildAt(i).setPadding(0,0,0,0); 
     tabHost.getTabWidget().getChildTabViewAt(i).setBackgroundDrawable(null); 
    } 
    tabHost.setCurrentTab(0); 

} 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    return super.onCreateOptionsMenu(menu); 

} 

public boolean onOptionsItemSelected(MenuItem item) { 
    super.onOptionsItemSelected(item); 

     switch (item.getItemId()) { 
      case R.id.menu_bantuan:  
       Intent itAbout = new Intent(EpolicyMainActivity.this, EpolicyBantuan.class); 
       itAbout.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(itAbout); 

       break; 
      case R.id.menu_exit:  
       dialogExit(); 

       break; 
      case R.id.menu_logout: 
       dialogSignOut(); 

       break; 
     } 


     return true; 
    } 
public void dialogSignOut() 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Apakah anda ingin sign-out?") 
       .setCancelable(false) 
       .setPositiveButton("Ya", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         Intent itSignOut = new Intent(EpolicyMainActivity.this, LoginActivity.class); 
         itSignOut.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(itSignOut); 
         finish(); 
        } 
       }) 
       .setNegativeButton("Tidak", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
public void dialogExit() 
    { 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Apakah anda ingin keluar?") 
       .setCancelable(false) 
       .setPositiveButton("Ya", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         Intent itSplashEnd = new Intent(EpolicyMainActivity.this, SplashOutActivity.class); 

         itSplashEnd.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         itSplashEnd.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(itSplashEnd); 
         finish(); 
        } 
       }) 
       .setNegativeButton("Tidak", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
@Override 
    public void onBackPressed() { 
     dialogExit(); 
    } 

ceci est mon menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/menu_bantuan" 
    android:title="@string/menu_bantuan" 
    android:orderInCategory="100" 
    android:showAsAction="ifRoom|withText"/> 

    <item android:id="@+id/menu_exit" 
    android:title="@string/menu_exit" 
    android:orderInCategory="100" 
    android:showAsAction="ifRoom|withText" /> 

    <item android:id="@+id/menu_logout" 
    android:title="@string/menu_logout" 
    android:orderInCategory="100" 
    android:showAsAction="ifRoom|withText" /> 

dans ma mise en page principale, j'utilise la tête, est cet effet de donner à mon menu, donc mon menu n'affiche ou autre chose?

+0

Avez-vous une trace de pile dans les journaux? –

+0

Avez-vous essayé de ne pas envoyer 'super.onCreateOptionsMenu (menu)', mais plutôt vrai dans 'onCreateOptionsMenu'? – Andy

+0

oui, j'ai, mais le menu ne sera toujours pas afficher –

Répondre

0

J'étais sous l'hypothèse que vous devriez toujours appeler d'abord super. Je suppose que votre menu.xml a un tag de fermeture de menu approprié. Avez-vous ce fichier xml stocké dans votre dossier res/menu? Pouvez-vous vérifier que onCreateOptionsMenu est appelé? Sur Android 2.3 et inférieur, vous devrez appuyer sur le bouton de menu, tandis que dans les distributions ultérieures, il devrait être affiché dans la barre de titre. Puisque vous utilisez une TabActivity, je suppose que vous écrivez une application pour Android 2.3.

Cette question pourrait être utile pour la méthode onMenuItemSelected(): Merge TabActivity menu with contained Activities menus

Pour les activités en vous TabActivity: How to create an optionsMenu in an Android's TabActivity

Peut-être que lorsque vous appuyez sur le bouton de menu, le menu des options de l'activité onglet spécifique vous êtes dans (par exemple LogInActivity) est appelée, et non celle de son parent. Essayez de mettre ce code dans chaque sous-activité:

public boolean onCreateOptionsMenu(Menu menu) 
{ 
    return getParent().onCreateOptionsMenu(menu); 
} 
+0

J'ai déjà essayé ce code, mais mon menu d'option ne s'affichera toujours pas –

+0

Avez-vous votre menu.xml dans le dossier res/menu? –

+0

oui, j'ai ..... –

0

Google a décidé d'éviter d'utiliser le menu du tout. S'il vous plaît lire cet article http://android-developers.blogspot.ru/2012/01/say-goodbye-to-menu-button.html

Si l'appareil n'a pas de bouton de menu matériel et que vous définissez la version de targetSDK> 10, l'utilisateur n'a pas la possibilité d'utiliser le menu. En tant que solution à court terme, vous pouvez définir targetSDK = 10 comme solution à long terme envisager d'utiliser ActionBar http://developer.android.com/guide/topics/ui/actionbar.html