更新:似乎只是在使用應用程序時,在某些隨機時間,當我長時間點擊時,應用程序會崩潰,特別是在屏幕底部的項目。任何想法可能是爲什麼?濃咖啡長按菜單項和彈出菜單
所以在我的應用程序中有一個列表視圖。如果你長按一個列表視圖項目,那麼一個彈出式菜單,錨定到你已經點擊過的那個項目上,出現了刪除或編輯菜單項的選項。只需使用該應用程序,一切正常。您可以長時間點擊列表中的任何項目,底層關聯數據將被刪除,並且列表視圖會在沒有剛刪除的項目的情況下刷新。
我在做什麼: 意式濃縮咖啡不喜歡我的列表視圖和長時間點擊。我只是試圖測試彈出式菜單出現,但我甚至無法讓espresso長時間成功。我在想這個問題與彈出式菜單有關。所以對於初學者來說,我只是想讓濃咖啡變得悠久而不會讓我感到不安。一旦espresso長按成功,我想我可以弄清楚如何檢查彈出窗口是否顯示。
我到目前爲止試過的東西:我看過關閉動畫應該可以幫助意式咖啡減少片狀。我關掉了所有可能的動畫,問題仍然存在。我甚至可以看我的手機上測試運行,並認爲它是longclicking正確的菜單項,但longclick完成,在彈出菜單中應該出現的時候,測試失敗
代碼: 這是咖啡測試線路失敗。除了click()
之外,我已經使用了相同的代碼行,應用程序可以做它應該做的事情,而且意式咖啡很開心。 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)
堆棧跟蹤的這最後一點是令人困惑,因爲我defintely設置彈出式菜單的錨點如下所示(這是從CourseMenuFragment 91行左右):
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)
定義了彈出菜單的錨點。也許這有問題?但如前所述,只要與自己互動,一切都會按預期完成。
任何指導,將不勝感激。請讓我知道是否需要澄清。
這可能有所幫助:http://stackoverflow.com/questions/24634136/menu-popup-helper-cannot-be-used-without-anchor –