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" />

私のメイン レイアウトでは、ヘッダーを使用しています。これはメニューに影響を与えるので、メニューは表示されませんか?

4

2 に答える 2

0

私は、常に最初に super を呼び出す必要があると想定していました。

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() メソッドに役立つかもしれません: TabActivity メニューを含まれているアクティビティ メニューとマージする

TabActivity 内のアクティビティの場合: Android の TabActivity で optionsMenu を作成する方法

おそらく、メニュー ボタンを押すと、現在のタブ アクティビティ (LogInActivity など) のオプション メニューが呼び出され、その親のオプション メニューは呼び出されません。このコードをすべてのサブアクティビティに入れてみてください:

public boolean onCreateOptionsMenu(Menu menu)
{
    return getParent().onCreateOptionsMenu(menu);
}
于 2013-05-13T09:47:18.427 に答える