Android Studio Menu item 的简单使用
關(guān)于Menu的簡單使用,大致概括為Menu的創(chuàng)建,和Item的監(jiān)聽事件。
目錄
1.Item的創(chuàng)建
菜單的響應(yīng)事件
1.Item的創(chuàng)建
首先我們打開Android Studio新建一個(gè)項(xiàng)目。
?選擇一個(gè)Empty Activity,完成點(diǎn)擊next。
輸入項(xiàng)目名點(diǎn)擊Finish。
切換為項(xiàng)目工程
?
?
點(diǎn)擊ok,再鼠標(biāo)右擊,新建一個(gè)Resource File 點(diǎn)擊ok
?創(chuàng)建完成之后我們打開剛剛新建的 main 去寫item標(biāo)簽。
這里我們創(chuàng)建兩個(gè) item 標(biāo)簽,先不管其內(nèi)容。?
這個(gè)時(shí)候你點(diǎn)擊運(yùn)行模擬器,但是你會發(fā)現(xiàn)在 Test 這個(gè)活動中并沒有出現(xiàn)圖中所示的菜單欄。當(dāng)然這上面只是教你如何創(chuàng)建,想要在活動中顯示出來,需要回到 MainActivity 里面重寫 onCreateOptionsMenu() 方法, 重寫方法可以使用 Ctrl + o 快捷鍵(Mac 系統(tǒng)是 control+ o)如下圖
?在onCreateOptionsMenu()中輸入以下代碼
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}通過 getMenuInflater() 方法能夠得到 MenuInflater 對象,再調(diào)用它的 inflate() 方法就可以給當(dāng)前活動創(chuàng)建菜單了。inflate() 方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)用于指定我們通過哪一個(gè)資源文件來創(chuàng)建菜單,這里當(dāng)然傳入 R.menu.main。 第二個(gè)參數(shù)用于指定我們的菜單項(xiàng)將添加到哪一個(gè) menu 對象當(dāng)中,這里直接使用 onCreateOptionsMenu() 方法傳入的 menu 參數(shù)。然后這個(gè)方法返回 true ,表示允許創(chuàng)建的菜單顯示出來, 如果返回了 false, 創(chuàng)建的菜單將無法顯示。
這個(gè)時(shí)候再點(diǎn)擊運(yùn)行在 Mian 活動界面就會出現(xiàn)菜單欄
菜單的響應(yīng)事件
?這個(gè)時(shí)候我們先再建一個(gè)活動
?為了區(qū)分這兩個(gè)活動,給這兩個(gè)活動加上 TextView 。
下面定義菜單的響應(yīng)事件。在 MainActivity 中重寫 onOptionsItemSelected() 方法
public boolean onOptionsItemSelected(MenuItem item){Intent intent = null;switch (item.getItemId()){case R.id.First_item:Toast.makeText(this,"You clicked first item",Toast.LENGTH_SHORT).show();break;case R.id.Sce_item:intent = new Intent(MainActivity.this, FirstActivity.class);Toast.makeText(this,"You clicked second item",Toast.LENGTH_SHORT).show();break;default:}startActivity(intent);return true;}這個(gè)時(shí)候我們在點(diǎn)擊運(yùn)行模擬器,貌似第一個(gè) item 出了一點(diǎn)小問題,我們點(diǎn)擊第二個(gè)按鈕,我們就會到 First 活動里面了?。
當(dāng)然,你要是想在 First 活動中添加菜單,你需要把對應(yīng)的代碼加入到 FirstActivity 里面。
最后我們來解決那個(gè)第一個(gè) item 點(diǎn)擊出現(xiàn)閃退的問題,先放下對應(yīng)的代碼圖片。
可以看到,在 switch case 里面我們有兩個(gè)語句,這兩個(gè)語句,只有一個(gè)用到了? intent? 語句,但是在?switch case 執(zhí)行之后,我們都執(zhí)行了?startActivity(intent) ,但是對于第一種情況,當(dāng)你給First_item 的響應(yīng)時(shí)間并沒有涉及到 intent 。所以代碼改成以下代碼。
public boolean onOptionsItemSelected(MenuItem item){Intent intent = null;boolean flag = true;switch (item.getItemId()){case R.id.First_item:Toast.makeText(this,"You clicked first item",Toast.LENGTH_SHORT).show();flag = false;break;case R.id.Sce_item:intent = new Intent(MainActivity.this, FirstActivity.class);Toast.makeText(this,"You clicked second item",Toast.LENGTH_SHORT).show();break;default:}if(flag){startActivity(intent);flag = false;}return true;}這個(gè)時(shí)候,我們再點(diǎn)擊運(yùn)行。結(jié)果如下:
?
文章部分來自 《第一行代碼》 第? 2 版? ?郭 霖? ?著 本文只是將在寫app時(shí)遇到的一點(diǎn)小問題,同書上的內(nèi)容結(jié)合以下,想要學(xué)習(xí) Andriod 開發(fā)這里極力推薦《一行代碼》。由于本人目前是一名大二的蒟蒻學(xué)生,所以如有出錯(cuò)或不當(dāng)請多多包涵,多多指教。
?
總結(jié)
以上是生活随笔為你收集整理的Android Studio Menu item 的简单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10之缺少一个或者多个协议(只能上
- 下一篇: Android 软件行为监控系统 的原理