Java Snackbar操作getView()

Java Snackbar操作getView(),java,android,snackbar,Java,Android,Snackbar,在我的活动中,我实现了OnClickListener接口 MainActivity扩展AppCompatActivity实现视图。OnClickListener 初始化snackbar如下所示: snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG); snackbar.setAction(R.string.action_undo, this); 但我无法在实现的OnClickListener接口方法上处理它 @Ov

在我的活动中,我实现了OnClickListener接口

MainActivity扩展AppCompatActivity实现视图。OnClickListener

初始化snackbar如下所示:

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()) {

    }
}

有人知道如何从snackbar获取操作视图吗?

您可以尝试在snackbar上设置操作

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);

对于每个
Snackbar
,都会显示
Snackbar
textview资源id

    android.support.design.R.id.snackbar_text
并且
Snackbar
操作视图资源id为

    android.support.design.R.id.snackbar_action
如果我正确理解了您的问题,您希望获得
Snackbar
操作资源id。您可以很容易地获得该id,正如我在上面提到的那样,在
onClick()
中,您可以像这样使用它-

@Override
public void onClick(View v) {

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

    }
}
始终(保留):


我的问题不是关于如何向snack添加操作,我需要知道如何获得:snack.getAction().getView(),如文档所示[Snackbar类没有
getAction
方法。你能解释更多的东西吗?你能告诉我这个的确切需要吗?这个的确切需要是漂亮的代码结构。很多可点击的视图都是由一个方法处理的,方法将View v作为输入参数,通过获取此视图的ID,我可以分离我的点击逻辑。但是snackbar缺少操作。getView()
v.getId()
android.support.design.R.id.snackbar_action