[英]Snackbar inside Recycler view
我的逻辑仅在没有 Call 许可时才起作用,如果我提供了许可,它就可以正常工作。
我试图在我的回收站视图中调用 Snackbar,Reason 作为我在回收站视图中的按钮之一必须调用 Call 工具。 因此,我正在检查Manifest.permission.CALL_PHONE权限,如果没有提供权限,则显示一个 snakbar。 在调用以下代码时
private void showSnackbar(MyViewHolder v , final int mainTextStringId, final int actionStringId,
View.OnClickListener listener) {
Snackbar.make(v.snackBarLayout,
context.getString(mainTextStringId),
Snackbar.LENGTH_INDEFINITE)
.setAction(context.getString(actionStringId), listener).show();
}
java.lang.IllegalArgumentException: 从给定的视图中找不到合适的父级。 请提供有效视图。
但是我正在尝试解析我的 Viewholder 表单
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
....
....
....
showSnackbar(holder,R.string.permission_rationale, android.R.string.ok,
new View.OnClickListener() {
@Override
public void onClick(View view) {
// Request permission
startCallPermissionRequest();
}
});
}
我不认为这是一个重复的问题,我尝试将零食栏更改为 findviewbyId,但无法获取要显示的视图。 视图仅来自 ViewHolder。
您将持有人作为 Snackbar 的父视图
showSnackbar(holder,R.string.permission_rationale, android.R.string.ok,
new View.OnClickListener() {
@Override
public void onClick(View view) {
// Request permission
startCallPermissionRequest();
}
});
您需要在与此适配器类连接的 xml 中的父视图对象(LinearLayout /RelativeLayout 或您提供的任何内容)而不是持有人
最后我能够解决它,问题是获取父视图我这样做是为了让它工作view.getRootView()
private void showSnackbar(View v , final int mainTextStringId, final int actionStringId,
View.OnClickListener listener) {
Snackbar.make(view.getRootView().findViewById(android.R.id.content),
context.getString(mainTextStringId),
Snackbar.LENGTH_INDEFINITE)
.setAction(context.getString(actionStringId), listener).show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.