如何在Honeycomb上以编程方式关闭ActionMode菜单?

时间:2012-06-22 15:08:39

标签: android android-fragments android-3.0-honeycomb contextual-action-bar

在我的应用程序中有一个ListFragment,其中列表中的每个项目都包含一个复选框。每当用户点击其中一个复选框时,应用程序就会启动一个ActionMode上下文菜单。 但我希望应用程序在单击另一个组件时关闭ActionMode菜单。 我试了Fragment#closeContextMenu()没有成功。

任何想法我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:84)

每当您创建/启动ActionMode Create by

mMode = startActionMode(....);

要关闭它,请使用以下语法

if (mMode != null) 
 {
     mMode.finish();
 }

答案 1 :(得分:1)

Kotlin代码

在按下菜单项后使用 ActionMode.Callback 完成ActionMode

 private val actionModeCallbacks = object : ActionMode.Callback {
    override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
        mode.menuInflater.inflate(R.menu.menu_action_mode, menu)
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
        return false
    }

    override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.menu_item -> {
                mode.finish() // after click of menu item close action mode
                return true
            }
        }
        return false
    }

    override fun onDestroyActionMode(mode: ActionMode) {


    }
}

<强> startSupportActionMode

(activity as AppCompatActivity).startSupportActionMode(actionModeCallbacks)

答案 2 :(得分:1)

export const hardshipTestData =
{
  scenarios:
  {
    Wrongusername: { username: 'abc', password: 'ab', loggedIn: false },
    Wrongpassword: { username: 'xyz', password: 'ab', loggedIn: false},
    blankCreds: { username: '', password: '', loggedIn: false },
    CorrectCreds: { username: 'username12', password: 'password12', loggedIn: true }

  }, }

从actionmode调用finish方法时...会破坏action模式。

it("TC", () => {
    browser.get("url link");
    browser.element(by.id("UserID")).sendKeys(alldata.username);
    browser.element(by.id("Password")).sendKeys(alldata.password);
    browser.element(by.className("k-button")).click();
    expect(isLoggedIn()).toBe(alldata.loggedIn);
})
从回调事件中调用

和destroy方法