【问题标题】:How to know what view triggered my ActionMode?如何知道哪个视图触发了我的 ActionMode?
【发布时间】:2013-12-04 15:57:20
【问题描述】:

刚刚表示了解 ICS 操作栏。我正在与 Action Bar Sherlock 合作,以便向后兼容我想做的事情,并且已经浏览了它的示例中的大量源代码。

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

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

【问题讨论】:

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


    【解决方案1】:

    要启动动作模式,您需要提供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));
    }
    

    【讨论】:

    • 你的public boolean onOptionsItemSelected(MenuItem item) { //Do something with viewId as the target }应该是onActionItemClicked (ActionMode mode, MenuItem item)
    • 没有开箱即用的东西吗?很奇怪。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      相关资源
      最近更新 更多