- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在操作栏中有一个按钮,其图标根据 bool 值更改。我想检查使用了哪个可绘制资源。
这是更改图标的代码:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem item = menu.findItem(R.id.menu_favorite);
if(mIsFavorite)
item.setIcon(R.drawable.ab_icon_on);
else
item.setIcon(R.drawable.ab_icon_off);
}
当需要改变图标时,菜单失效:
// request menu update
supportInvalidateOptionsMenu();
最后,我想检查结果的 Espresso 代码:
@Test
public void action_setUnsetFavorite() {
// check favorite off
onView(withImageDrawable(R.drawable.ab_icon_off))
.check(matches(isDisplayed()));
// click favorite button
onView(withId(R.id.menu_favorite))
.perform(click());
// check favorite on
onView(withImageDrawable(R.drawable.ab_icon_on))
.check(matches(isDisplayed()));
请注意,我正在使用找到的自定义匹配器 here .
最佳答案
我不能 100% 确定匹配器的工作方式以及这是否是最佳响应,但使用稍微不同版本的方法肯定有效。
问题是当前的匹配器只适用于 ImageViews。 ActionMenuItemView 实际上是 textView 的子类,因此不会匹配,而且它也没有 getDrawable() 方法。
请注意,这仍然需要原始帖子中的 sameBitmap 方法。
public static Matcher<View> withActionIconDrawable(@DrawableRes final int resourceId) {
return new BoundedMatcher<View, ActionMenuItemView>(ActionMenuItemView.class) {
@Override
public void describeTo(final Description description) {
description.appendText("has image drawable resource " + resourceId);
}
@Override
public boolean matchesSafely(final ActionMenuItemView actionMenuItemView) {
return sameBitmap(actionMenuItemView.getContext(), actionMenuItemView.getItemData().getIcon(), resourceId);
}
};
}
关于android - 如何在 Espresso 中测试 ActionMenuItemView 的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054009/
我在操作栏中有一个按钮,其图标根据 bool 值更改。我想检查使用了哪个可绘制资源。 这是更改图标的代码: @Override public void onPrepareOptionsMenu(Men
当特定 fragment 处于 Activity 状态时,我在尝试从工具栏的菜单中隐藏某些项目时遇到问题。 (编辑:在这种情况下,工具栏未设置为 ActionBar) 我一直在四处寻找解决方案,发现您
在我的 Activity 中有一个按钮,它填充了一个数据库。我的方法是使用 actionBar Item 做同样的事情。我不明白我的问题是什么。在没有按钮的 ActionBar 中保存项目的最佳方法是
在我的应用程序中,我想调用一个新的Intent,但它显示异常: java.lang.ClassCastException: android.support.v7.internal.view.menu.
我是一名优秀的程序员,十分优秀!