RED_ RED_ - 28 days ago 15
Java Question

Request runtime permissions from v4.Fragment and have callback go to Fragment?

I'm having a weird issue that is causing a conflict. I had to switch to native

Fragments
to fix it, but there are bugs with that.

My original problem: I have a navigation drawer setup with
v4 Fragments.
To ask for permission in one of my Fragments I call
ActivityCompat.requestPermissions(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, 1);
The prompt shows up just fine, but when I accept or deny the permission, nothing happens. The callback
onRequestPermissionsResult()
is never called. Instead it gets called in the Activity that my Fragments are attached to. Useless to me, I need the callback to work in the Fragment.

With this in mind I was told that I need to use
FragmentCompat
, but that only works with
native Fragments (v13+)
, so I changed navigation drawer to work from native Fragments instead of the v4 support library Fragments. However, because I'm using AppCompatActivity, certain things do not work, like
addToBackStack()
and going back to a previous fragment.

Long story short, does anyone know how I can use the
v4.Fragment
and still call for permission in the
Fragment
and get the callback to be in the
Fragment
? I feel like this is a bug in Android that hasn't been addressed but I'm not 100%.

Sorry if this is a little longwinded. Let me know if you need to see my code, it's just the standard methods that you need for runtime permissions, I would like to work with v4 Fragments though which doesn't work from my understanding.

Thanks for any advice you have to offer!

Answer

This behavior seems to be present in the v4 Fragment support class [1]. The Activity/FragmentCompat implementations exist for people who wish to use the native classes with the extended functionality on API levels between 11 and 23.