4

在我的活动中,我实现了 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()) {

    }
}

有人知道如何从小吃店获取动作视图吗?

4

3 回答 3

11

对于每一个SnackbarSnackbartextview 资源 id 是

    android.support.design.R.id.snackbar_text

并且Snackbar动作视图资源ID是

    android.support.design.R.id.snackbar_action

如果我正确理解了您的问题,您希望获取Snackbar操作资源 ID。正如我上面提到的,你可以很容易地得到它onClick(),你可以像这样使用它 -

@Override
public void onClick(View v) {

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

    }
}
于 2016-03-21T22:44:42.857 回答
1
v.getId()

总是(保留):

android.support.design.R.id.snackbar_action

文档

于 2017-11-15T12:46:34.493 回答
0

你可以试试这个在小吃店上设置动作。

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);
于 2016-03-21T21:28:40.250 回答