设置在Android上下文菜单中选择的项目

时间:2012-11-19 13:49:57

标签: android testing contextmenu

在我的Activity中,我有一个带有已注册ContextMenu的GridView。现在我想测试这个Activity,因此我在GridView的第一个子节点上说performLongClick()并打开上下文菜单。现在我想按下此菜单中的第一个条目,是否可以这样做?

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); <---
    }
}

1 个答案:

答案 0 :(得分:3)

好的,我通过在MainActivity中覆盖'onCreateContextMenu(ContextMenu菜单,View 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();
}