actionbar上下文视图的私有字段名是什么



A你好…我使用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);

如何知道私有字段的名称?当函数失败并抛出空actionBarContextView断言失败时…

您可以下载ActionBarSherlock的源代码,它应该会显示您要查找的内容。

最新更新