以编程方式单击上下文操作栏上的“完成”按钮

时间:2014-06-29 08:51:18

标签: android android-actionbar

如何以编程方式单击上下文操作栏上的“完成”按钮?或者更具体地说,这个按钮的id是什么?如果我知道那么多,我可以使用Robotium点击视图。

更新

hierarchyviewer会显示值mId的属性NO_ID,所以现在我需要帮助解决原始问题。有没有人对如何做到这一点有任何其他想法?特别是,我需要在测试期间单击“完成”按钮。

2 个答案:

答案 0 :(得分:1)

  

或者更具体地说,这个按钮的id是什么?

您要找的ID是action_mode_close_button

  

如何以编程方式单击“上下文”上的“完成”按钮   行动吧?

您可以致电View.performClick。您需要给View一个时间布置,以便它不会返回null。一个简单的解决方案是使用您的Runnable或任何您用来启动ListView的{​​{1}}发布ActionMode。这是一个例子:

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mList.postDelayed(new Runnable() {

                @Override
                public void run() {
                    findViewById(android.R.id.action_mode_close_button).performClick();
                }
            }, 1000);
            return true;
        }

答案 1 :(得分:0)

这很hacky,我不喜欢使用它,但它有效。

int doneButtonId = Resources.getSystem().getIdentifier("action_mode_close_button", "id", "android");
View doneButton = getActivity().findViewById(doneButtonId);

if(doneButton != null && doneButton.isClickable(){
doneButton.performClick();
}

我认为.isClickable()可能是不必要的,但为了以防万一我留下它。