android - Activity 没有选项菜单

标签 android robolectric

我尝试使用 Robolectric 模拟点击 Toolbar 中的 Menu Item,使用以下代码

ShadowActivity shadowActivity = Shadows.shadowOf(activity);
shadowActivity.clickMenuItem(R.id.action_logout);

但它给我一个错误:

java.lang.RuntimeException: Activity does not have an options menu! Did you forget to call super.onCreateOptionsMenu(menu)

Activity 代码:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_layout);
    overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);

    ButterKnife.bind(this);

    setToolbarIcons();
    toolbar.inflateMenu(R.menu.menu_splash);
    toolbar.setOnMenuItemClickListener(this);
}


@Override
public boolean onMenuItemClick(MenuItem item) {

    int id = item.getItemId();
    if (id == R.id.action_logout){
        //Doing Some task here...
        return true;
    }
    return false;
}

你能帮我解决这个错误吗?

最佳答案

在我的 Activity 类中进行更改并深入挖掘 RobolectricToolBar 之后,我也在测试类中进行了一些更改,即工作正常

@Test
public void clickOnMenuItem(){
    ShadowActivity shadowActivity = Shadows.shadowOf(activity);
    Menu menu =  mToolbar.getMenu();
    shadowActivity.onCreateOptionsMenu(menu);
    shadowActivity.clickMenuItem(R.id.action_logout);
}

关于android - Activity 没有选项菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869746/

相关文章:

android - 如何找到 Google Play 应用程序 ID?

javascript - Jsoup javascript按钮点击

javascript - 使用 JavaScript 在 Android 手机上发送/阅读短信?

android - Robolectric 3 NoClassDefFoundError 上下文

android - 无法获取提供商 com.google.android.gms.ads.MobileAdsInitProvider : java. lang.IllegalStateException

android - 尝试在 eclipse 中使用 phonegap 创建 android 应用程序时出现错误 "Invalid resource directory name"

java - Robolectric 2.0 和 RoboGuice 2.0 集成

android - Robolectric 和 GoogleCloudMessaging

android - 在使用 Robolectric 测试 Android 应用程序时,如何创建影子类来解决与自定义属性相关的崩溃问题?

Android 单元测试过去工作正常,现在抛出 NullPointerException