如何知道哪个视图触发了我的ActionMode?

时间:2012-02-11 00:55:02

标签: android android-4.0-ice-cream-sandwich actionbarsherlock android-actionbar

刚刚说明了解ICS Actionbar。我正在与Action Bar Sherlock合作,向后兼容我想要做的事情,并且已经通过其样本上的大量源代码。

我有3个图像视图,我想设置一个监听器,长按一次所有3.当用户长按一个时,我将在操作栏上显示一个ActionMode,让他们拍照。由于操作栏似乎与菜单一样工作,我如何知道ImageView在点击按钮后触发了我的ActionMode?

现在没有完成很多代码,因为我刚刚开始研究它,这是我想要做的第一件事。

2 个答案:

答案 0 :(得分:6)

要启动操作模式,您需要提供ActionMode.Callback类的实例。对于这样的事情,你应该在这个类中创建一个构造函数,它接受一些关于图像视图的相关信息。

public static class ImageActionMode extends ActionMode.Callback {
    private final int viewId;

    public ImageActionMode(View view) {
        viewId = view.getId();
    }

    public boolean onActionItemClicked (ActionMode mode, MenuItem item) {
        //Do something with viewId as the target
    }

    //Other callbacks
}

您还可以保留对完整ImageView或您需要回复选项项的任何其他内容的引用。

现在,当您启动动作模式时,您将执行以下操作:

public void onLongPress(View view, /*whatever else...*/) {
    startActionMode(new ImageActionMode(view));
}

答案 1 :(得分:0)

花了一些时间后,我已经实施并成功运作。 在下面的链接中,我给出了正确的代码和解释。

https://stackoverflow.com/a/20369954/452487