自分で回避策を見つけたので、誰かがこれを必要とする場合に備えて、ここに投稿してください。このコードは私のために働いた:
public static void clickOnUpActionBarButton(Activity activity) {
ActionMenuItem logoNavItem = new ActionMenuItem(activity, 0, android.R.id.home, 0, 0, "");
ActionBarSherlockCompat absc = (ActionBarSherlockCompat) UiTestUtils.invokePrivateMethodWithoutParameters(
SherlockFragmentActivity.class, "getSherlock", activity);
absc.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, logoNavItem);
}
getSherlock()
まず、SherlockFragmentActivityを呼び出して、ActionBarSherlockCompatオブジェクトを取得する必要があります。このメソッドは保護されているため、ReflectionAPIを使用して呼び出しました。
public static Object invokePrivateMethodWithoutParameters(Class<?> clazz, String methodName, Object receiver) {
Method method = null;
try {
method = clazz.getDeclaredMethod(methodName, (Class<?>[]) null);
} catch (NoSuchMethodException e) {
Log.e(TAG, e.getClass().getName() + ": " + methodName);
}
if (method != null) {
method.setAccessible(true);
try {
return method.invoke(receiver, (Object[]) null);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return null;
}
solo.getCurrentActivity()
私のメソッドにパスする必要がありclickOnUpActionBarButton(Activity activity)
、上ボタンが押されます。