Как узнать, какой вид вызвал мой ActionMode? - PullRequest
1 голос
/ 11 февраля 2012

Только что рассказал о панели действий ICS.Я работаю с Action Bar Sherlock, чтобы быть обратно совместимым для вещей, которые я хочу сделать, и прошел через множество исходных кодов в его примерах.долго нажимать на все 3. Когда пользователь долго нажимает один, я покажу ActionMode над панелью действий, позволяя ему сделать снимок.Поскольку панель действий, кажется, работает так же, как меню, как я узнаю, что ImageView вызвало мой ActionMode после того, как они нажали на кнопку?

Не много кода сделано сейчас, потому что яначать изучать это, и это было первое, что я хотел сделать.

Ответы [ 2 ]

6 голосов
/ 11 февраля 2012

Чтобы инициировать режим действия, вам необходимо предоставить экземпляр класса 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));
}
0 голосов
/ 04 декабря 2013

Потратив некоторое время на это, я реализовал его и успешно работал.По ссылке ниже я дал правильный код, а также объяснение.

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

...