Skip to content Skip to sidebar Skip to footer

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"