2013-05-13 3 views
0

я хочу показать свое меню с панелью действий, но мое меню не будет отображаться, это мой исходный код:Опции меню не будет отображаться

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

это мой 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" /> 

в моем основном макете, я использую заголовок, это дает эффект моему меню, так что мое меню не будет отображаться или что-нибудь еще?

+0

У вас есть трассировка стека в журналах? –

+0

Вы пробовали не отправлять 'super.onCreateOptionsMenu (menu)', а скорее просто true в 'onCreateOptionsMenu'? – Andy

+0

Да, у меня есть, но в меню все еще не отображается –

ответ

0

Я был в предположении, что вы всегда должны сначала называть супер.

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

    return true; 
} 

Я предполагаю, что ваш menu.xml имеет соответствующий тег закрытия меню. У вас есть этот xml-файл, хранящийся в папке res/menu? Вы можете проверить, вызвана ли onCreateOptionsMenu?

На Android 2.3 и ниже вам нужно будет нажать кнопку меню, тогда как в последующих дистрибутивах она должна отображаться в строке заголовка. Поскольку вы используете TabActivity, я предполагаю, что вы пишете приложение для Android 2.3.

Этот вопрос может быть полезен для onMenuItemSelected() метод: Merge TabActivity menu with contained Activities menus

Для деятельности внутри вас TabActivity: How to create an optionsMenu in an Android's TabActivity

Возможно, при нажатии на кнопку меню, меню вариантов конкретной вкладки деятельности, вы находитесь (например, LogInActivity), а не его родителя. Попробуйте поместить этот код во все побочные действия:

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

Я уже пробовал этот код, но мое опционное меню все еще не отображает –

+0

У вас есть свой menu.xml в папке res/menu? –

+0

да, у меня есть ..... –

0

Google решил избежать использования меню вообще. Пожалуйста, прочитайте эту статью http://android-developers.blogspot.ru/2012/01/say-goodbye-to-menu-button.html

Если устройство не имеет кнопки меню оборудования, и вы устанавливаете версию targetSDK> 10 пользователь не имеет возможности использовать меню. В качестве краткосрочного решения вы можете установить targetSDK = 10 в качестве долгосрочного решения рассмотреть использование ActionBar http://developer.android.com/guide/topics/ui/actionbar.html

Смежные вопросы