我有一个片段类和一个普通的HelpFunctionsclass。我希望片段类通过在HelpFunctionsclass中调用一个方法来显示一个Snackbar。
在片段类中,我在按下某个按钮后调用以下代码:
HelpFunctions.showSnackBar(getActivity(), getString(R.string.message_ratingSubmittedNotSuccessfully), binding.getRoot());在HelpFunctions类中,显示Snackbar的方法如下所示:
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来更改它呢?不然我怎么能给你看小吃店呢?
发布于 2022-07-30 15:18:52
如文件所述。
Snackbar将尝试从视图的值中找到一个父视图来保存Snackbar的视图。Snackbar将沿着视图树遍历,试图找到一个合适的父视图,它被定义为一个CoordinatorLayout或窗口装饰的内容视图,不管是哪个优先。
现在需要提供上下文,将视图指向层次结构。
上下文:用于创建Snackbar视图的上下文。
因此,使用Snackbar.make(Context context, View view, CharSequence text, int duration)
就像传递一样
public static void showSnackBar(Activity activity, String message, View root){
Snackbar currentSnackBar = Snackbar.make( activity, root, message, Snackbar.LENGTH_LONG);
}https://stackoverflow.com/questions/73176679
复制相似问题