首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:在给定视图中找不到合适的父级。请提供一个有效的视图

:在给定视图中找不到合适的父级。请提供一个有效的视图
EN

Stack Overflow用户
提问于 2022-07-30 15:01:46
回答 1查看 89关注 0票数 0

我有一个片段类和一个普通的HelpFunctionsclass。我希望片段类通过在HelpFunctionsclass中调用一个方法来显示一个Snackbar。

在片段类中,我在按下某个按钮后调用以下代码:

代码语言:javascript
复制
HelpFunctions.showSnackBar(getActivity(), getString(R.string.message_ratingSubmittedNotSuccessfully),  binding.getRoot());

在HelpFunctions类中,显示Snackbar的方法如下所示:

代码语言:javascript
复制
public static void showSnackBar(Activity activity, String message, View root){

    Snackbar currentSnackBar = Snackbar.make( root, message, Snackbar.LENGTH_LONG);
    View sbView = currentSnackBar.getView();
    sbView.setBackgroundColor(ContextCompat.getColor(activity, R.color.colorBlue));
    currentSnackBar.show();
}

当我执行我的代码时,我会收到以下错误消息:"java.lang.IllegalArgumentException:在给定视图中找不到合适的父级。请提供有效的视图。“我寻找这个问题的解决方案,并找到了这个答案:java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view。这里指出,我应该使用findViewById(android.R.id.content)作为根目录。不幸的是,当我在我的方法showSnackBar中使用Snackbar currentSnackBar = Snackbar.make( findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG);行时,我从编译器那里得到错误消息,“无法在‘HelpFunctions’中解析方法'findViewById‘”。

知道为什么我会收到这个错误消息吗?为什么我不能用findViewById来更改它呢?不然我怎么能给你看小吃店呢?

EN

回答 1

Stack Overflow用户

发布于 2022-07-30 15:18:52

如文件所述。

Snackbar将尝试从视图的值中找到一个父视图来保存Snackbar的视图。Snackbar将沿着视图树遍历,试图找到一个合适的父视图,它被定义为一个CoordinatorLayout或窗口装饰的内容视图,不管是哪个优先。

现在需要提供上下文,将视图指向层次结构。

上下文:用于创建Snackbar视图的上下文。

因此,使用Snackbar.make(Context context, View view, CharSequence text, int duration)

就像传递一样

代码语言:javascript
复制
public static void showSnackBar(Activity activity, String message, View root){
    Snackbar currentSnackBar = Snackbar.make( activity, root, message, Snackbar.LENGTH_LONG);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73176679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档