2012-09-13 25 views
1

我有一個註冊爲創建上下文菜單的列表視圖的活動:如何取消上下文菜單的創建onCreateContextMenu()被調用後

registerForContextMenu(getListView()); 

的問題是,長時間點擊在某些項目上不應該顯示上下文菜單,因爲項目被禁用。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position); 

    if(bDisplayMenu) 
    { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.context_menu, menu); 
    } 
    else 
    { 
     // WHAT SHOUlD I DO HERE TO CANCEL THE CREATION OF THE CONTEXT MENU? 
    } 

} 

我看不出有什麼辦法取消一旦onCreateContextMenu上下文菜單()被調用的創建。

+0

沒有ü嘗試menu.close() –

+0

@ LEO87事實證明,如果我沒有創建一個菜單,onCreateContextMenu()返回(只調用super.onCreateContextMenu()),那麼將不會出現在菜單中。 –

+0

ohh..great ..... –

回答

2

事實證明,如果我在調用super之後立即從onCreateContextMenu()退出,那麼上下文菜單根本不會出現。

不知道這是要走的路(我沒有看到有關這方面的任何文檔)。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position); 

    if(bDisplayMenu) 
    { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.context_menu, menu); 
    } 
    else 
    { 
     return; // the context menu will not be displayed 
    } 

} 
相關問題