Snackbar Is Not Working Within Fragment Class
I am trying to show snackbar view when I click on button but it shows force close error when I click on button I have define fragment class below and also error log. I have fragme
Solution 1:
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
Solution 2:
I have solved this:
It is fine if we do not include CoordinatedLayout
to my fragment_home.xml
Answer :
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.!!!
Solution 3:
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;
}
Solution 4:
For Kotlin language you have to use:
requireActivity().findViewById(R.id.context_id)
For example:
Snackbar.make(
requireActivity().findViewById(R.id.context_id),
getString(R.string.something_went_wrong),
Snackbar.LENGTH_LONG
).show()
Post a Comment for "Snackbar Is Not Working Within Fragment Class"