更新:似乎只有在使用应用程序时,当我长时间点击时,应用程序才会崩溃,特别是在屏幕底部的项目上.为什么会有这样的想法?
所以我的应用程序中有一个列表视图.如果您单击列表视图项目,将会有一个弹出菜单,锚定到您已经长期按下的项目,并有一个选项来删除或编辑菜单项.只需使用应用程序,一切正常.您可以长按列表中的任何项目,删除基本相关数据,刷新列表视图,而不刷新您刚刚删除的项目.
我在做什么:
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)定义弹出菜单的锚点.也许有问题吗?但正如我所说,当我和自己互动时,一切都是完全正常的.
任何指导都导.如果需要澄清,请告诉我.