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

Set*_*ari 1 android android-4.0-ice-cream-sandwich actionbarsherlock android-actionbar

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

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

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

Jak*_*ton 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
}
Run Code Online (Sandbox Code Playgroud)

您还可以保留对完整ImageView或其他任何响应选项项所需的内容的引用.

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

public void onLongPress(View view, /*whatever else...*/) {
    startActionMode(new ImageActionMode(view));
}
Run Code Online (Sandbox Code Playgroud)