Recycler视图内的小吃店

问题描述 投票:0回答:2

我的逻辑仅在没有呼叫许可时才起作用,如果我提供了许可,它就可以正常工作。

我正在尝试在回收器视图中调用Snackbar,原因是我在回收器视图中的按钮之一必须调用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。

android android-recyclerview recycler-adapter
2个回答
2
投票

您将持有人作为Snackbar的父视图


0
投票

最后,我能够解决它,问题在于获取父视图,我这样做是为了使它正常工作view.getRootView()

© www.soinside.com 2019 - 2024. All rights reserved.