歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中的顯示跳轉和隱式跳轉

簡介

  Android提供了三種菜單類型,分別為options menu,context menu,sub menu。

  options menu就是通過按home鍵來顯示,context menu需要在view上按上2s後顯示。這兩種menu都有可以加入子菜單,子菜單不能種不能嵌套子菜單。options menu最多只能在屏幕最下面顯示6個菜單選項,稱為iconmenu,icon menu不能有checkable選項。多於6的菜單項會以more icon menu來調出,稱為expanded menu。options menu通過activity的onCreateOptionsMenu來生成,這個函數只會在menu第一次生成時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 用來處理選中的菜單項。

  context menu是跟某個具體的view綁定在一起,在activity種用registerForContextMenu來為某個view注冊context menu。context menu在顯示前都會調用onCreateContextMenu來生成menu。onContextItemSelected用來處理選中的菜單項。

  android還提供了對菜單項進行分組的功能,可以把相似功能的菜單項分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設置菜單屬性,而無須單獨設置。

  Options Menu

Notepad中使用了options menu和context menu兩種菜單。首先來看生成options menu的onCreateOptionsMenu函數。

menu.add(0, MENU_ITEM_INSERT, 0, R.string.menu_insert)

.setShortcut('3', 'a')

.setIcon(android.R.drawable.ic_menu_add);

  這是一個標准的插入一個菜單項的方法,菜單項的id為MENU_ITEM_INSERT。有意思的是下面這幾句代碼:

Intent intent = new Intent(null, getIntent().getData());

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0,

new ComponentName(this, NotesList.class), null, intent, 0, null);

  這到底有何用處呢?其實這是一種動態菜單技術(也有點像插件機制),若某一個activity,其類型是”android.intent.category.ALTERNATIVE”,數據是”vnd.android.cursor.dir/vnd.google.note”的話,系統就會為這個activity增加一個菜單項。在androidmanfest.xml中查看後發現,沒有一個activity符合條件,所以這段代碼並沒有動態添加出任何一個菜單項。

  為了驗證上述分析,我們可以來做一個實驗,在androidmanfest.xml中進行修改,看是否會動態生成出菜單項。

Copyright © Linux教程網 All Rights Reserved