自定义 class 的 Snackbar 未显示

Snackbar from custom class not showing

我的活动coord.xml:

<CoordinatorLayout>
   id:coordID
   <RelativeL>
      ...
   <FAB>

RVAdapter.java

...
@Override
    public void onItemDismiss(int position) {
        ...
        notifyItemRemoved(position);

        LayoutInflater inflater = (LayoutInflater) MyActivity.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(R.layout.coord, null);

        Snackbar.make(v.findViewById(R.id.coordID), "TEXT", Snackbar.LENGTH_LONG).show();
    }

这是一种从回收站视图列表中滑动删除项目的方法,在自定义 class (RVAdapter.java) 中删除后,应该会出现 Snackbar 并为 UNDO 设置操作。但是,当我删除一个项目时,没有任何反应。 Snackbar 没有出现。我不太确定我是否正确设置了视图,但我不知道如何做不同的事情

在我看来,不显示 snackbar 可能有两个原因。

  1. 其他视图的高度太高,无法显示 snackbar。检查 activity.
  2. 中所有视图的高度
  3. 您作为 Snackbar.make() 的参数 view 提供的 activity 的引用可能不正确。如果是这种情况,那么我建议您通过构造函数将 activity 的引用传递给适配器,然后按如下方式存储它。

    public class MoviesAdapter extends RecyclerView.Adapter<MyViewHolder> {
    
        private List<Movie> moviesList;
        private MainActivity activity;
    
        MoviesAdapter(MainActivity activity){
            super();
            this.activity = activity;
        }
    
        //continue your remaining work from here
    
    }
    

我本来想发表评论并要求提供更多详细信息,但由于我的声誉不佳,我没有被允许这样做。希望这些建议对你有用。

感谢 Mike M。我是这样解决的:
在 MyActivity 添加

private static CoordinatorLayout mCoord;
mCoord = findViewById(R.id.coordID);
public static View getCoord() { return mCoord; }

并在 RVAdapter.java

Snackbar.make(MyActivity.getCoord(), ...