2011-05-27 69 views
2

我有一個鏈接到API級別11的項目。當我在手機上運行它,並點擊菜單鍵時,我的菜單顯示正常。當我在運行Android 3.0.1的設備上運行時,菜單鍵不會出現在同一活動中:菜單鍵不會出現在我的應用程序上的蜂窩?

任何想法爲什麼菜單鍵不會顯示此活動?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.add(...); 
    return true; 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    menu.add(...); 
    return super.onPrepareOptionsMenu(menu); 
} 

菜單鍵不應該出現在這個活動中嗎?

感謝

-----更新--------------------

經過一些搜索,發現這個線程在同一問題: http://groups.google.com/group/android-developers/browse_thread/thread/c4b1b835060bd93f

Hackborn說,菜單按鈕,將顯示,如果你目標SDK 11.這一點我在做什麼。所以,我現在有一個非常奇怪的設置:

<manifest> 
    <uses-sdk 
    android:minSdkVersion="5" 
    android:targetSdkVersion="10" /> 

    <application 
    android:hardwareAccelerated="true" > 
    </application> 
</manifest> 

,並在我的項目屬性,我掛SDK 11.我鏈接到SDK 11的原因是,我可以使用「硬件加速=真」如上所述在清單中標記。所以總結一下,我在項目設置中鏈接到了sdk 11,但是在清單中設置了targetSdkVersion = 10。那是合法的嗎?我認爲他們將有權利匹配,

感謝

回答

5

這是合法的,它會工作,它不符合Android用戶體驗標準。 :)

當您定位API 11時,系統欄中沒有顯示菜單按鈕的原因是我們僅顯示它支持舊版應用程序。新的應用程序應該使用操作欄爲您的活動提供選項。操作欄將由在先前版本中填充選項菜單的相同機制填充。

目標API 11並確保您沒有禁用主題或活動中的標題欄,並且默認情況下會獲得一個操作欄。菜單將出現在右上角。

+0

這是我所見過的最可怕的答案更低!所以你故意禁用它的所有應用程序,現在你告訴我,如果我想瞄準SDK> 10我必須放鬆幾年的開發時間來改造整個應用程序,只是因爲?? !!?我討厭你谷歌,你變得比微軟更糟! – 2014-01-09 13:32:29

1

這是合法的:它會建立罰款,將正常工作爲好。我不知道會出現任何問題:文檔明確指出您可以定位的版本低於您構建的版本。

1

只需刪除android:targetVersion屬性清單文件 和使用android:minSdkVersion="8" minsdk版本應該比你的設備版本