Из документации для make()
:
Snackbar попытается найти родительское представление для хранения представления Snackbar со значением, заданным для view
.Snackbar будет проходить вверх по дереву представлений, пытаясь найти подходящего родителя, который определяется как CoordinatorLayout
или представление содержимого оформления окна, в зависимости от того, что наступит раньше.
Итак, когда вы передаете результатfindViewById(R.id.recycler_view)
, вызов make()
будет проверять родительский объект RecyclerView, родительский родительский объект и т. Д. До тех пор, пока он не найдет CoordinatorLayout
или не перейдет к основному представлению содержимого.
Iдержу пари, что вы столкнулись со второй половиной этого.
Самый простой способ исправить это - обернуть ваш RecyclerView
в CoordinatorLayout
.Я не могу точно сказать, как это сделать, не видя XML-макет, но, вероятно, вы просто хотите
<android.support.design.widget.CoordinatorLayout
android:layout_width="whatever you had on the recyclerview"
android:layout_height="whatever you had on the recyclerview"
...>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
.../>
</android.support.design.widget.CoordinatorLayout>