2012-11-19 97 views
1

在我的活動中,我有一個帶註冊ContextMenu的GridView。現在我想測試這個活動,因此我在GridView的第一個孩子上說performLongClick(),並打開上下文菜單。現在我想按此菜單中的第一個條目,是否可以這樣做?在Android上下文菜單中選擇的設置項目

public class TestClass extends extends ActivityInstrumentationTestCase2<MainActivity> { 
    public void testMe() { 
     final GridView gv = getActivity().findViewById(R.id.some_id); 
     getActivity().runOnUiThread(new Runnable() { 
      public void run() { 
       gv.getChildAt(0).performLongClick(); 
      } 
     }); 
     getInstrumenttation().waitForIdleSync(); 

     //Registered Context Menu opens 

     //????some method to get contextMenu and press first item 
     //getActivity().getContextMenu().performClick(0); <--- 
    } 
} 

回答

3

好吧,我在我的MainActivity解決我的問題通過重寫'onCreateContextMenu(文本菜單菜單,視圖V,ContextMenuInfo資訊)「並設置菜單爲全局變量。之後,我可以檢索我的測試類中的ContextMenu並執行點擊操作:

public void testDelete() { 
    performLongClick(gv.getChildAt(1)); 

    final ContextMenu contextMenu = getActivity().getContextMenu(); 
    assertTrue(contextMenu != null); 

    getActivity().runOnUiThread(new Runnable() { 
     public void run() { 
      contextMenu.performIdentifierAction(R.id.menuItemId, 0); 
     } 
    }); 
    getInstrumentation().waitForIdleSync(); 
} 
相關問題