Android 自定义类中的Snackbar未显示
MyActivity coord.xml:Android 自定义类中的Snackbar未显示,android,android-recyclerview,snackbar,Android,Android Recyclerview,Snackbar,MyActivity coord.xml: <CoordinatorLayout> id:coordID <RelativeL> ... <FAB> 这是一种在自定义类(RVAdapter.java)中通过滑动从回收器视图列表中删除项目的方法,删除后,应显示Snackbar并设置撤消操作。但是,当我删除一个项目时,什么都没有发生。Snackbar没有出现。我不太确定我是否正确设置了视图,但我不知道如何以不同的方式进行设置在我看来
<CoordinatorLayout>
id:coordID
<RelativeL>
...
<FAB>
这是一种在自定义类(RVAdapter.java)中通过滑动从回收器视图列表中删除项目的方法,删除后,应显示Snackbar并设置撤消操作。但是,当我删除一个项目时,什么都没有发生。Snackbar没有出现。我不太确定我是否正确设置了视图,但我不知道如何以不同的方式进行设置在我看来,我认为不显示snackbar可能有两个原因
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
}
公共类MoviesAdapter扩展了RecyclerView.Adapter{
私人名单电影名单;
私人活动;
MoviesAdapter(主活动){
超级();
这个。活动=活动;
}
//从这里继续您剩余的工作
}
我本想发表评论并询问更多细节,但由于我的名声不好,我不被允许这样做。希望这些建议对你有用。谢谢Mike M。我这样解决它:
在MyActivity中添加
private static CoordinatorLayout mCoord;
mCoord = findViewById(R.id.coordID);
public static View getCoord() { return mCoord; }
在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();
}
Snackbar.make(MyActivity.getCoord(), ...
使用这个Snackbar.make(v,“TEXT”,Snackbar.LENGTH_LONG.show();
View v
您现在充气,屏幕上没有任何东西,因此Snackbar
找不到合适的视图。您需要将活动
层次结构中的一些视图
传递给它。它可以是任何东西,真的;e、 例如,RecyclerView
Snackbar
将向上搜索,以找到坐标布局
本身。@MikeM。Im I未通过视图v=充气机。。。???该方法中有第二个和第三个参数,但对于第二个,我需要一个视图组,我不知道从哪里获取它?不,我是说LayoutInflater
和View v
没有用,因为它从未连接到活动。去掉这些,并传递Snackbar.make()
一些已经在活动中的视图
。我只是建议使用RecyclerView
,因为这是唯一的视图,我相信您已经使用了。1。情况并非如此。我试过了,然后我使用了Snackbar.make(activity.findViewById(R.id.coordID),…
,我收到了一个错误,我试图读取空对象引用上的字段activity.findViewById(R.id.coordID)
!?