2013-04-17 108 views
0

我測試了我的應用程序在Nexus 10(Android 4.2.1)上,並在操作欄上的溢出菜單工作正常。所以當溢出菜單沒有出現在Galaxy Note 2上時,我驚呆了。讀完Android action bar not showing overflowHow To Control use of OverFlow Menu in ICS之後,我終於意識到在Galaxy note 2上有一個內置的菜單按鈕,如果有一個菜單按鈕會出現「溢出菜單」按下該按鈕。動作欄溢出菜單與硬件永久菜單按鈕

對這兩個問題的迴應表明,不應該使用那裏的代碼來禁用永久菜單按鈕,因爲儘管它具有(a)使溢出菜單出現在操作欄中的效果,顯然它也( b)也在其他應用程序中強制執行相同的行爲。但是,對我來說,操作欄中的溢出菜單遠遠勝於菜單按鈕,對這兩個問題的評論意味着其他人也會這麼想。

我的問題是,有什麼可以使用該代碼來禁用onResume()中的永久菜單按鈕,並在onPause()中重新啓用它?在我選擇的應用程序中,使操作欄溢出菜單起作用的方法有多可靠,而所有其他應用程序保持不變?

爲了記錄,在我看來,Android設計人員(包括軟件和硬件)有不知何故共謀造成這個問題,並沒有簡單的解決方案。一些程序員認爲,讓所有應用程序在單個設備上以相同方式工作比在不同設備上以相同方式工作的任何特定應用程序更重要。其他程序員認爲是相反的。

+3

有超過** 3億** Android用戶的設備與菜單按鈕,誰已按菜單按鈕進入選項菜單(或溢出的應用程序使用類似ActionBarSherlock)。在某些情況下,他們多年來一直這樣做,沒有很多問題。 「一些程序員認爲,讓所有應用程序在單個設備上以相同的方式工作比使用不同設備上的任何特定應用程序以相同方式工作更重要」 - 更重要的是,**用戶**認爲這一點。他們不關心你的應用在他們不使用的設備上的外觀。 – CommonsWare

+1

@CommonsWare但有多個設備的用戶呢? - 一個沒有硬件菜單按鈕,一個沒有?截圖導致混淆呢? - 「爲什麼我看不到3點圖標?」。那些不會自動轉換到硬件菜單按鈕的Android用戶的新用戶呢? Android的一個常見抱怨是它讓新用戶感到困惑。關於硬件菜單按鈕,我同意。始終顯示溢出圖標也可以實現一致性(儘管這必須由SDK驅動才能成功)。就我個人而言,我希望在系統設置中看到一個複選框來控制這一點。 –

回答

1

正如其他人所說,你真的不應該這樣做。讓菜單工作,但它在每個其他應用程序(這當然取決於設備)。

此外,您無法在其他應用程序中影響菜單按鈕的行爲,因此您不必擔心整個onPause/onResume業務。

+0

@LuxuryMode非常有趣,對這兩個老問題的看法的力量使我認爲其他應用程序受到了影響。但現在我已經重新閱讀,我想我錯了!所以我想這只是關於一個應用程序跨設備的一致性是否勝過了一臺設備上很多應用程序的一致性呢?-)。 – Stochastically

+0

@隨機耶穌相信我,我可以同情。我知道,有時候設計上的考慮會讓你對強調默認行爲感到強烈,但它通常不值得被黑客利用。 99%的時間,除非你有一個非常非常好的理由,否則你最好只用默認設置 - 即使這樣,在引入不穩定的黑客等方面你也在進行艱苦的鬥爭。 – LuxuryMode