Действие в закусочной getView()

в моей деятельности у меня есть интерфейс OnClickListener

MainActivity extends AppCompatActivity implements View.OnClickListener

запустите закусочную следующим образом:

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG);
snackbar.setAction(R.string.action_undo, this);

но я не могу справиться с реализованным методом интерфейса OnClickListener

@Override
public void onClick(View v) {
    // this not work!
    // snackbar id is different from snackbar action id
    if (v.getId() == snackbar.getView().getId()) {

    }
}

Кто-нибудь знает, как получить представление о действиях из закусочной?


person Vasil Valchev    schedule 21.03.2016    source источник
comment
Подскажите, пожалуйста, для чего это нужно?   -  person Shadab Ansari    schedule 22.03.2016
comment
Точной потребностью в этом является красивая структура кода. Многие интерактивные представления обрабатываются одним методом, метод имеет View v в качестве входного параметра, и, получив идентификатор этого представления, я могу отделить логику кликов. Но в закусочной отсутствует action.getView()   -  person Vasil Valchev    schedule 22.03.2016


Ответы (3)


Для каждого Snackbar идентификатор ресурса textview Snackbar равен

    android.support.design.R.id.snackbar_text

И идентификатор ресурса просмотра действия Snackbar

    android.support.design.R.id.snackbar_action

Если я правильно понял ваш вопрос, вы хотите получить идентификатор ресурса действия Snackbar. вы можете легко получить это, как я упоминал выше, и в onClick() вы можете использовать его как -

@Override
public void onClick(View v) {

    if (v.getId() == android.support.design.R.id.snackbar_action) {

    }
}
person Shadab Ansari    schedule 21.03.2016

v.getId()

всегда (зарезервировано):

android.support.design.R.id.snackbar_action

Документ

person Hossein Kurd    schedule 15.11.2017

Вы можете попробовать это, чтобы установить действие на закусочной.

View.OnClickListener snackbarClickListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {

         }
     };

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG);
snackbar.setAction(R.string.action_undo, snackbarClickListener);
person brainbreaker    schedule 21.03.2016
comment
Мой вопрос не о том, как добавить действие к закуске, мне нужно знать, как это получить: закуска.getAction().getView() - person Vasil Valchev; 22.03.2016
comment
Согласно документации[developer.android.com/reference/android /support/design/widget/ Класс Snackbar не имеет метода getAction. Можете ли вы объяснить что-то еще. - person brainbreaker; 22.03.2016