最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android菜單操作之創(chuàng)建并響應(yīng)菜單

 更新時(shí)間:2016年04月17日 17:04:12   作者:CodingMyWorld  
這篇文章主要介紹了Android菜單操作之創(chuàng)建并響應(yīng)菜單的相關(guān)資料,如何使用代碼創(chuàng)建菜單項(xiàng),給菜單項(xiàng)分組,及各種響應(yīng)菜單事件的方法,需要的朋友可以參考下

上一篇《學(xué)習(xí)理解Android菜單Menu操作》簡(jiǎn)單介紹了一下Android的菜單,今天讓我們看一下如何通過(guò)代碼創(chuàng)建和響應(yīng)最常用的選項(xiàng)菜單(options menu)。

一、創(chuàng)建options menu

之前提到,Android的activity已經(jīng)為我們提前創(chuàng)建好了android.view.Menu對(duì)象,并提供了回調(diào)方法onCreateOptionsMenu(Menu menu)供我們初始化菜單的內(nèi)容。該方法只會(huì)在選項(xiàng)菜單第一次顯示的時(shí)候被執(zhí)行,如果你需要?jiǎng)討B(tài)改變選項(xiàng)菜單的內(nèi)容,請(qǐng)使用 onPrepareOptionsMenu(Menu)。

@Override
publicboolean onCreateOptionsMenu(Menu menu) {
 // 調(diào)用父類方法來(lái)加入系統(tǒng)菜單
 // 雖然目前android還沒(méi)有系統(tǒng)菜單,但是為了兼容到以后的版本,最好加上
super.onCreateOptionsMenu(menu);
 
 // 添加菜單項(xiàng)(多種方式)
 // 1.直接指定標(biāo)題
 menu.add("菜單項(xiàng)1");
 // 2.通過(guò)資源指定標(biāo)題
 menu.add(R.string.menuitem2);
 // 3.顯示指定菜單項(xiàng)的組號(hào)、ID、排序號(hào)、標(biāo)題
 menu.add(
  1,  //組號(hào)
  Menu.FIRST, //唯一的ID號(hào)
  Menu.FIRST, //排序號(hào)
"菜單項(xiàng)3"); //標(biāo)題
 
 // 如果希望顯示菜單,請(qǐng)返回true
returntrue;
}

上面的代碼演示了添加菜單項(xiàng)的3種方法,下面解釋下第三種方法add(int groupId, int itemId, int order, CharSequence title)。其中,第一個(gè)參數(shù)是組號(hào),android中你可以給菜單分組,以便快速地操作同一組的菜單。第二個(gè)參數(shù)指定每個(gè)菜單項(xiàng)的唯一ID號(hào),你可以自己指定,也可以讓系統(tǒng)來(lái)自動(dòng)分配,在響應(yīng)菜單時(shí)你需要通過(guò)ID號(hào)來(lái)判斷哪個(gè)菜單被點(diǎn)擊了。因此常規(guī)的做法是定義一些ID常量,但在android中有更好的方法,就是通過(guò)資源文件來(lái)引用,這個(gè)之后介紹。第三個(gè)參數(shù)代表菜單項(xiàng)顯示順序的編號(hào),編號(hào)小的顯示在前面。

二、給菜單項(xiàng)分組

@Override
publicboolean onCreateOptionsMenu(Menu menu) {
 super.onCreateOptionsMenu(menu);
 // 添加4個(gè)菜單項(xiàng),分成2組
int group1 =1;
 int gourp2 =2;
 menu.add(group1, 1, 1, "item 1");
 menu.add(group1, 2, 2, "item 2");
 menu.add(gourp2, 3, 3, "item 3");
 menu.add(gourp2, 4, 4, "item 4");
 // 顯示菜單
returntrue;
}

你可以向上面這樣給菜單項(xiàng)分組,分組之后就能使用menu中提供的方法對(duì)組進(jìn)行操作了,如下:

menu.removeGroup(group1); //刪除一組菜單
menu.setGroupVisible(gourp2, visible); //設(shè)置一組菜單是否可見(jiàn)
menu.setGroupEnabled(gourp2, enabled); //設(shè)置一組菜單是否可點(diǎn)
menu.setGroupCheckable(gourp2, checkable, exclusive); //設(shè)置一組菜單的勾選情況

三、響應(yīng)菜單項(xiàng)

android提供了多種響應(yīng)菜單項(xiàng)的方式,下面一一介紹

1、通過(guò)onOptionsItemSelected方法
使用的最多方法是重寫activity類的 onOptionsItemSelected(MenuItem)回調(diào)方法,每當(dāng)有菜單項(xiàng)被點(diǎn)擊時(shí),android就會(huì)調(diào)用該方法,并傳入被點(diǎn)擊菜單項(xiàng)。

@Override
publicboolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 //響應(yīng)每個(gè)菜單項(xiàng)(通過(guò)菜單項(xiàng)的ID)
case1:
 // do something here
break;
 case2:
 // do something here
break;
 case3:
 // do something here
break;
 case4:
 // do something here
break;
 default:
 //對(duì)沒(méi)有處理的事件,交給父類來(lái)處理
returnsuper.onOptionsItemSelected(item);
 }
 //返回true表示處理完菜單項(xiàng)的事件,不需要將該事件繼續(xù)傳播下去了
returntrue;
}

以上代碼可作為使用onOptionsItemSelected方法響應(yīng)菜單的模板來(lái)使用,這里為了方便起見(jiàn)將菜單ID硬編碼在程序里,你可以使用常量或資源ID來(lái)使代碼更健壯。

2.使用監(jiān)聽(tīng)器
雖然第一種方法是推薦使用的方法,android還是提供了類似java swing的監(jiān)聽(tīng)器方式來(lái)響應(yīng)菜單。使用監(jiān)聽(tīng)器的方式分為兩步:

//第一步:創(chuàng)建監(jiān)聽(tīng)器類
class MyMenuItemClickListener implements OnMenuItemClickListener {
 @Override
 publicboolean onMenuItemClick(MenuItem item) {
 // do something here...
returntrue; //finish handling
 }
}

//第二步:為菜單項(xiàng)注冊(cè)監(jiān)聽(tīng)器
menuItem.setOnMenuItemClickListener(new MyMenuItemClickListener());

 android文檔對(duì)onMenuItemClick(MenuItem item)回調(diào)方法的說(shuō)明是"Called when a menu item has been invoked. This is the first code that is executed; if it returns true, no other callbacks will be executed." 可見(jiàn)該方法先于onOptionsItemSelected執(zhí)行。

3.使用Intent響應(yīng)菜單
第3種方式是直接在MenuItem上調(diào)用setIntent(Intent intent)方法,這樣android會(huì)自動(dòng)在該菜單被點(diǎn)擊時(shí)調(diào)用 startActivity(Intent)。但是個(gè)人認(rèn)為與其這樣還不如直接在onOptionsItemSelected的case里手動(dòng)調(diào)用 startActivity(Intent)來(lái)的直觀。

結(jié)語(yǔ)

本文詳細(xì)介紹了如何創(chuàng)建和響應(yīng)選項(xiàng)菜單,下一篇《Android菜單操作之SubMenu和IconMenu》將繼續(xù)介紹子菜單和圖標(biāo)菜單的使用,大家繼續(xù)關(guān)注哦。

相關(guān)文章

  • Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn)

    Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android N多窗口支持

    Android N多窗口支持

    Android N 可以同時(shí)顯示多個(gè)應(yīng)用窗口。在手機(jī)上,兩個(gè)應(yīng)用可以在“分屏”模式中左右并排或上下并排顯示。本文將對(duì)此介紹。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • Android跳轉(zhuǎn)系統(tǒng)設(shè)置Settings的各個(gè)界面詳解

    Android跳轉(zhuǎn)系統(tǒng)設(shè)置Settings的各個(gè)界面詳解

    系統(tǒng)設(shè)置Settings中定義的一些常用的各界面ACTION常量,下面這篇文章主要給大家介紹了關(guān)于Android跳轉(zhuǎn)系統(tǒng)設(shè)置Settings的各個(gè)界面,文中介紹非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Android Studio中的Gradle依賴深入講解

    Android Studio中的Gradle依賴深入講解

    Android Studio由于使用了gradle的進(jìn)行項(xiàng)目構(gòu)建,使我們開(kāi)發(fā)app方便很多,下面這篇文章主要給大家介紹了關(guān)于Android Studio中Gradle依賴的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • Android如何添加控件監(jiān)聽(tīng)器(三種方式)

    Android如何添加控件監(jiān)聽(tīng)器(三種方式)

    本文主要介紹了Android如何添加控件監(jiān)聽(tīng)器(三種方式),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • flutter 自定義card陰影效果及card使用

    flutter 自定義card陰影效果及card使用

    這篇文章主要介紹了flutter 自定義card陰影效果及card使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Android 簡(jiǎn)單的實(shí)現(xiàn)滑塊拼圖驗(yàn)證碼功能

    Android 簡(jiǎn)單的實(shí)現(xiàn)滑塊拼圖驗(yàn)證碼功能

    這篇文章主要介紹了Android 簡(jiǎn)單的實(shí)現(xiàn)滑塊拼圖驗(yàn)證碼功能,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下
    2021-03-03
  • Android顯示全文折疊控件使用方法詳解

    Android顯示全文折疊控件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android顯示全文折疊控件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android官方的側(cè)滑控件DrawerLayout的示例代碼

    Android官方的側(cè)滑控件DrawerLayout的示例代碼

    這篇文章主要介紹了Android官方的側(cè)滑控件DrawerLayout的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-09-09
  • 簡(jiǎn)介Android 中的AsyncTask

    簡(jiǎn)介Android 中的AsyncTask

    AsyncTask是一個(gè)很常用的API,尤其異步處理數(shù)據(jù)并將數(shù)據(jù)應(yīng)用到視圖的操作場(chǎng)合。接下來(lái)通過(guò)本文給大家介紹Android 中的AsyncTask,感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03

最新評(píng)論

瑞安市| 海城市| 息烽县| 九龙坡区| 吉林省| 许昌市| 潞西市| 公主岭市| 邵东县| 中卫市| 西安市| 洛浦县| 石泉县| 榆社县| 塘沽区| 富平县| 大丰市| 霍邱县| 怀仁县| 洛隆县| 宣威市| 滨州市| 额尔古纳市| 尉犁县| 西畴县| 长寿区| 嵩明县| 临汾市| 亚东县| 礼泉县| 都兰县| 榆树市| 五大连池市| 枞阳县| 都匀市| 二手房| 乌兰察布市| 华阴市| 成都市| 札达县| 柳州市|