android编辑框长按弹出菜单,android – espresso长按菜单项和弹出菜单

更新:似乎只是在使用应用程序时,在某些随机时间,当我长时间点击时,应用程序将崩溃,尤其是在屏幕底部的项目上.关于为什么会这样的任何想法?

所以我的应用程序中有一个列表视图.如果您单击列表视图项目,则会出现一个弹出菜单,该菜单锚定到您已经长按的项目,并带有删除或编辑菜单项的选项.只需使用该应用程序,一切正常.您可以长按列表中的任何项目,删除基础关联数据,并刷新列表视图,而不刷新您刚刚删除的项目.

我正在做的事情:

Espresso不喜欢我的列表视图和长按.我只是试图测试弹出菜单出现,但我甚至无法成功地获得浓缩咖啡.我认为这个问题与弹出菜单有关.所以对于初学者来说,我只是想让浓缩咖啡变成longclick而不会让我心烦意乱.一旦espresso成功点击,我想我可以弄清楚如何检查是否显示弹出窗口.

我到目前为止所尝试的内容:我读到关闭动画应该可以帮助浓缩咖啡减少干扰.我关掉了所有的动画,问题仍然存在.我甚至可以在手机上观看测试运行并看到它正在长按正确的菜单项,但是当完成longclick并且弹出菜单出现时,测试失败

码:

这是espresso测试线失败.我之前使用了相同的代码行,除了click()和应用程序做了它应该做的事情,espresso很高兴. mCourseCount只是列表中最后一项的索引.那不是问题.我在其他几个测试中更新了相同的索引,一切正常.

onData(anything()).inAdapterView(withId(R.id.listview_class))

.atPosition(mCourseCount).perform(longClick());

失败时,堆栈跟踪中存在几条有趣的行

android.support.test.espresso.PerformException: Error performing 'long

click' on view ' displaying data matching: ANYTHING within adapter vieW

matching: with id: com.cmsc355.classcompass.classcompass:id/listview_class'

后来

Caused by: java.lang.IllegalStateException: MenuPopupHelper cannot be used

without an anchor at

com.android.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:101)

at android.widget.PopupMenu.show(PopupMenu.java:108)at

com.cmsc355.classcompass.classcompass.CourseMenuFragment$2.

onItemLongClick(CourseMenuFragment.java:91)

堆栈跟踪的最后一位令人困惑,因为我使用锚定义设置弹出菜单如下(这是来自第91行的CourseMenuFragment):

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView> parent,final View view,final int position,long id) {

PopupMenu popupEdit = new PopupMenu(getActivity(),listView.getChildAt(position));

popupEdit.getMenuInflater().inflate(R.menu.course_longclick_popup,popupEdit.getMenu());

popupEdit.show();

popupEdit.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

@Override

public boolean onMenuItemClick(MenuItem item) {

if (item.getItemId() == R.id.edit_course) {

} else if (item.getItemId() == R.id.delete_course) {

throwCourseDeleteAlert(position);

listView.setAdapter(mCourseNameAdapter);

}

return true;

}

});

return true;

}

});

在首次实例化弹出窗口的行中,listView.getChildAt(position)定义弹出菜单的锚点.也许这有问题吗?但正如所提到的,当与我自己进行交互时,一切都完全正常.

任何指导将不胜感激.如果需要澄清,请告诉我.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值