首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 選單不顯示?onCreateOptionsMenu 必須 return true

     編輯:程式設計綜合問答

一行代碼解決:忘記 return true

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true; // ← 這行若寫成 false 或漏寫,選單就不會顯示
}

為什麼?

onCreateOptionsMenu 回傳值告訴系統:「我有處理選單,請顯示它」。回傳 false 代表「我不處理,系統別顯示」。

常見踩坑情境

  • 複製貼上程式碼時漏掉回傳值
  • 誤以為 super.onCreateOptionsMenu(menu) 會回傳 true(父類別預設回傳 true,但若你覆寫且沒呼叫 super,必須自己回傳)
  • 在 Fragment 中忘記呼叫 setHasOptionsMenu(true)

完整檢查清單

  1. Activity/Fragment 有實作 onCreateOptionsMenu 並 return true。
  2. Fragment 已在 onCreate 呼叫 setHasOptionsMenu(true)。
  3. 選單資源檔 res/menu/xxx.xml 存在且 <item android:showAsAction="ifRoom|never"> 設定正確。
  4. 未在 onPrepareOptionsMenu 中誤將項目設為 setVisible(false)。
  5. ToolBar/ActionBar 確實已設定為 setSupportActionBar(toolbar)。

總結

選單不顯示 90% 是 return true 忘寫。檢查這一行,問題通常即刻解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved