You can also use:
getActivity().findViewById(android.R.id.content)
like this:
Snackbar snackBar = Snackbar.make(getActivity().findViewById(android.R.id.content),
"Look at me, I'm a fancy snackbar", Snackbar.LENGTH_LONG);
snackBar.show();
See this
I have solved this:
It is fine if we do not include CoordinatedLayout
to my fragment_home.xml
Solution:
Defined : private RelativeLayout mRoot;
Now initialize in initUI(View view)
mRoot = (RelativeLayout) view.findViewById(R.id.mainrl);
and on Button click event put the following code:
Snackbar.make(mRoot, "Had a snack at Snackbar", Snackbar.LENGTH_LONG).show();
Now main thing about this is:
just change current theme to Theme.AppCompat.Light.NoActionBar
It Done.!!!
SnackBar make
method takes a view and from that view it trails up the heirarchy until it finds a suitable layout to show, if you had an exception this means that you didn't add CoordinatedLayout to your project
private static ViewGroup findSuitableParent(View view) {
ViewGroup fallback = null;
do {
if(view instanceof CoordinatorLayout) {
return (ViewGroup)view;
}
if(view instanceof FrameLayout) {
// android.R.id.content
if(view.getId() == 16908290) {
return (ViewGroup)view;
}
fallback = (ViewGroup)view;
}
if(view != null) {
ViewParent parent = view.getParent();
view = parent instanceof View?(View)parent:null;
}
} while(view != null);
return fallback;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With