2013-01-04 51 views
2

爲什麼我必須告訴我的活動它的佈局應該是兩次?setContentView(R.layout.activity_main)vs getMenuInflater()。inflate(R.menu.activity_main,menu)

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); // <-- 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); // <-- 
    return true; 
} 

這兩種方法有什麼區別?我應該什麼時候使用一個,什麼時候使用另一個?

+3

第一個用於活動窗口,第二個用於OptionsMenu –

+1

'R.layout'和'R.menu'是關鍵。 – Sam

回答

9

它們是兩個分開的東西。名字告訴你。 R.layout.activity_main是你的佈局,R.menu.activity_main是你的菜單

setContentView()設置活動的佈局。它包括按鈕,TextViews等。

onCreateOptionsMenu()使您在按菜單鍵或在Android 3.0+上填充ActionBar時看到的菜單。

他們做了兩件完全分開的事情。經常需要setContentView()(除非您有空的Activity),onCreateOptionsMenu()是可選的,具體取決於您是否需要顯示更多選項。

+0

我明白了。和「菜單」你的意思是 - > https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQrVPCPADkO2xtE_33ELya-evX_fEmXPJZ3n3TnOm-PdY38zGiEIw? – feresr

+0

@ user1949554是的。 –

+0

好吧:)非常感謝你! – feresr

0

java文件裏面的gen文件夾裏會有定義的佈局,ID和菜單靜態類。你會從那裏得到想法。

相關問題