【发布时间】:2014-03-26 16:08:42
【问题描述】:
你好,,, 我正在使用 robotium 框架来测试 android 应用程序,并且我使用 Robotium-actionbarsherlock 扩展来执行上下文操作栏菜单项的点击...
这是我正在使用的函数,,,
public void clickOnActionModeOverflowMenuItem(String text) {
Activity activity = solo.getCurrentActivity();
Log.d("aaaa", activity.toString());
if (!(activity instanceof SherlockFragmentActivity)) {
throw new IllegalStateException("This method should be called only in SherlockFragmentActivity.");
}
ActionBarContextView actionBarContextView = null;
try {
ActionBarSherlock actionBarSherlock = (ActionBarSherlock) invokePrivateMethodWithoutParameters(
SherlockFragmentActivity.class, "getSherlock", activity);
Log.d("eeee", actionBarSherlock.toString());
actionBarContextView = (ActionBarContextView) getPrivateField("mActionModeView", actionBarSherlock);
Log.d("dddd", actionBarContextView.toString());
} catch (Exception ex) {
Log.d(LOG_TAG, "Can not find methods to invoke action mode overflow button.");
}
if (actionBarContextView == null) {
Assert.fail("Contextual actionbar is not shown.");
}
actionBarContextView.showOverflowMenu();
sleeper.sleep();
clicker.clickOnText(text, false, 1, true, 0);
}
所以,我问的是这条线..
actionBarContextView = (ActionBarContextView) getPrivateField("mActionModeView", actionBarSherlock);
我如何知道私有字段名称? 由于函数失败并抛出 null actionBarContextView 的断言失败 ...
【问题讨论】:
标签: android actionbarsherlock robotium