Xamarin.Forms
Xamarin.Forms copied to clipboard
Xamarin.AndroidX.Fragment needs to be adjusted or bumped....
Description
Email.ComposeAsync crashes app with Java.Lang.IllegalStateException: FragmentContainer does not have a view
In my code I have a button that will open the email client with a preselected "To" address.
This is the code I am using. var message = new EmailMessage { To = recipients, }; await Email.ComposeAsync(message);
The call to Email.ComposeAsync looks like it working fine, I get the dialog to choose which email app I want to use, then when I select one, my app in the background crashes with this error. This does not happen with other Xamarin Essentials things like "Share" options when email is selected.
Steps to Reproduce
- Call await Email.ComposeAsync(message);
- Select email app you want to use
- App crashes
Expected Behavior
App should remain where it was until the user has finished sending their email
Actual Behavior
App crashes when email app is selected
Basic Information
-
Version with issue:
-
Last known good version: Not sure
-
IDE: VS2019
-
Platform Target Frameworks:
- iOS:
- Android:
- UWP:
-
Android Support Library Version: AndroidX
-
Nuget Packages: Xamarin.Forms 5.0.0.2012 Xamarin.Essentials: 1.6.1
-
Affected Devices:
Screenshots
JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) Activity.OnStart () FormsAppCompatActivity.OnStart () D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:417 Activity.n_OnStart (System.IntPtr jnienv, System.IntPtr native__this) (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.23(intptr,intptr) java.lang.IllegalStateException: Fragment FragmentContainer{2ab20f} (753ad94b-2740-4b04-8c2b-8b68181c275e) id=0x7} does not have a view androidx.fragment.app.Fragment$4.onFindViewById Fragment.java:2888 androidx.fragment.app.FragmentStateManager.createView FragmentStateManager.java:501 androidx.fragment.app.FragmentStateManager.moveToExpectedState FragmentStateManager.java:282 androidx.fragment.app.FragmentStore.moveToExpectedState FragmentStore.java:112 androidx.fragment.app.FragmentManager.moveToState FragmentManager.java:1636 androidx.fragment.app.FragmentManager.dispatchStateChange FragmentManager.java:3112 androidx.fragment.app.FragmentManager.dispatchActivityCreated FragmentManager.java:3056 androidx.fragment.app.Fragment.performActivityCreated Fragment.java:2989 androidx.fragment.app.FragmentStateManager.activityCreated FragmentStateManager.java:577 androidx.fragment.app.FragmentStateManager.moveToExpectedState FragmentStateManager.java:285 androidx.fragment.app.FragmentStore.moveToExpectedState FragmentStore.java:112 androidx.fragment.app.FragmentManager.moveToState FragmentManager.java:1636 androidx.fragment.app.FragmentManager.dispatchStateChange FragmentManager.java:3112 androidx.fragment.app.FragmentManager.dispatchActivityCreated FragmentManager.java:3056 androidx.fragment.app.FragmentController.dispatchActivityCreated FragmentController.java:251 androidx.fragment.app.FragmentActivity.onStart FragmentActivity.java:473 androidx.appcompat.app.AppCompatActivity.onStart AppCompatActivity.java:210 crc643f46942d9dd1fff9.FormsAppCompatActivity.n_onStart(Native Method) crc643f46942d9dd1fff9.FormsAppCompatActivity.onStart FormsAppCompatActivity.java:128 android.app.Instrumentation.callActivityOnStart Instrumentation.java:1433 android.app.Activity.performStart Activity.java:7980 android.app.ActivityThread.handleStartActivity ActivityThread.java:3578 android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221 android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201 android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173 android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97 android.app.ActivityThread$H.handleMessage ActivityThread.java:2220 android.os.Handler.dispatchMessage Handler.java:107 android.os.Looper.loop Looper.java:237 android.app.ActivityThread.main ActivityThread.java:8016 java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:493 com.android.internal.os.ZygoteInit.main ZygoteInit.java:1076
Reproduction Link
Update - specifically installing Xamarin.AndroidX.Fragment v1.2.5.4 seems to stop the crash.
Same problem for me
I have a similar error. My Xamarin.Forms has version 5.0.0.2012 and Xamarin.AndroidX.Fragment v1.3.1.
Same here.
I have the same problem! Have the latest Xamarin.Forms 5.0.0.2012 and Xamarin.AndroidX.Fragment 1.3.2 installed @jamesmontemagno why is it closed? too many people have this issue
So, we don't take a dependency on this nuget, Xamarin.Forms does via https://www.nuget.org/packages/Xamarin.AndroidX.Legacy.Support.V4/ so i will transfer the issue there. It looks like that will need to be bumped there.
same here, i look report from appcenter and google play store, many my customer affected. help
androidx.fragment.app.Fragment$4.onFindViewById Java.Lang.IllegalStateException: Fragment FragmentContainer{21084c4} (e687202c-12b0-4c6d-a6b9-f87f17028f31) id=0x1} does not have a view
I probably have the same problem (all nugets are up to date):
java.lang.IllegalStateException:
at androidx.fragment.app.Fragment$4.onFindViewById (Fragment.java:2888)
at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:501)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:282)
at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:112)
at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1636)
at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3112)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:3056)
at androidx.fragment.app.Fragment.performActivityCreated (Fragment.java:2989)
at androidx.fragment.app.FragmentStateManager.activityCreated (FragmentStateManager.java:577)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:285)
at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:112)
at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1636)
at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3112)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:3056)
at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:251)
at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:473)
at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:210)
at crc643f46942d9dd1fff9.FormsAppCompatActivity.n_onStart (Native Method)
at crc643f46942d9dd1fff9.FormsAppCompatActivity.onStart (FormsAppCompatActivity.java:128)
at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1435)
at android.app.Activity.performStart (Activity.java:8222)
at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3818)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8506)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Workaround is to just manually install the latest 'Xamarin.AndroidX.Fragment' nuget package.
@jamesmontemagno Even after manually installing the mentioned package, the app keeps crashing on Android 11. What can I do?
Did you install Xamarin.AndroidX.Fragment v1.2.5.4 ? or a newer one? looks like some investigation may need to be done.
I've installed the latest version, 1.3.2. Should I roll back to v1.2.5.4? I don't even know what action in the app precedes the crashes, as I'm unable to reproduce them on emulators. I only get reports from the Play console, all the same as the one I posted above.
Same here, any new infos on this?
I cannot reproduce, but I can see it on Google ARNs
@gogolon earlier someone said rolling back to 1.2.5.4 fixed their issue.
This error occurred for me whenever the app went from the background back into the foreground. OnResume was not even called, it just instantly crashed with this error. Rolled back to 1.2.5.4 only to get this error. I then installed Xamarin.AndroidX.Activity 1.2.2 and Fragment 1.2.5.4 to resolve everything.
I can confirm that the downgrade fixes the issue, thanks @nielsbrg I had to downgrade other dependencies as well. Hope this will get fixed soon.
Same thing here. Can't reproduce myself (debug or release version), but Google console is full of it.
I will try your workaround on my next release.
Confirmed that the workaround above fixed all of my crashes
As a side note: it happened to (random?) devices above Android 9+
Can confirm the issue still persists without downgrading to 1.2.5.4. Is there an estimate for fixing this?
Xamarin.AndroidX.Fragment 1.2.5.4 seems to fix it, but that is a whole 6 versions behind current. Is there any news on a fixed version?
Tested with 1.4.0 and still get same error...
I am able to reproduce with:
- Launch App
- Tap Home
- Run
adb shell "am kill <PackageName>"
- Resume app... KABOOM!
1.2.5.4 has no error.
FYI @DevEddy @xleon @jamesmontemagno
This was i think all the time issue with Xamarin even on Xamarin.Android reported long time a go on SO. https://stackoverflow.com/questions/39068772/xamarin-forms-android-java-lang-illegalstateexception-fragment-does-not-have-a
It is crucial issue indeed. we need to find a solution on this.
d with 1.4.0 and still get same error...
I am able to reproduce with:
I am seeing the error in my appcenter logs but i am not able reproduce with the way you described even without having Xamarin.AndroidX.Fragment installed. I am testing on Android 11 device
any idea how can reproduce and solve this? this is really getting annoying 100s of crashes
any idea how can reproduce and solve this? this is really getting annoying 100s of crashes
Did downgrading the library Xamarin.Android.Fragment to version 1.2.5.4 help you?
@pro777s - yes it did for me
yes but is that a good solution to go so many versions older? because when you try to downgrade Fragment package, it automatically downgrades all related packages. So you need to basically use all AndroidX packages from 1.2.5.4. I don't find this is a good solution.
@EmilAlipiev, I agree with you. I don't understand why there is no reaction from the Xamarin developers.
there is no Xamarin.Android.Fragment installed on my android project, should i new install Xamarin.Android.Fragment 1.2.5.4 can solved this issue?
Normally you don't need it. I also don't have it but for workaround it's claimed that you need to install the older version which makes no sense. It's pretty old and I am afraid that it can cause other issues