Xamarin.Forms icon indicating copy to clipboard operation
Xamarin.Forms copied to clipboard

Xamarin.AndroidX.Fragment needs to be adjusted or bumped....

Open WilliamWatterson86 opened this issue 3 years ago • 56 comments

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

  1. Call await Email.ComposeAsync(message);
  2. Select email app you want to use
  3. 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

image

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

WilliamWatterson86 avatar Mar 11 '21 09:03 WilliamWatterson86

Update - specifically installing Xamarin.AndroidX.Fragment v1.2.5.4 seems to stop the crash.

WilliamWatterson86 avatar Mar 11 '21 09:03 WilliamWatterson86

Same problem for me

matteopiccioni avatar Mar 29 '21 12:03 matteopiccioni

I have a similar error. My Xamarin.Forms has version 5.0.0.2012 and Xamarin.AndroidX.Fragment v1.3.1.

pro777s avatar Mar 29 '21 20:03 pro777s

Same here.

pboisso avatar Apr 21 '21 00:04 pboisso

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

Alex-Dobrynin avatar Apr 21 '21 15:04 Alex-Dobrynin

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.

jamesmontemagno avatar Apr 21 '21 15:04 jamesmontemagno

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

agusibrahim avatar Apr 22 '21 01:04 agusibrahim

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)

gogolon avatar Apr 22 '21 13:04 gogolon

Workaround is to just manually install the latest 'Xamarin.AndroidX.Fragment' nuget package.

jamesmontemagno avatar Apr 22 '21 15:04 jamesmontemagno

@jamesmontemagno Even after manually installing the mentioned package, the app keeps crashing on Android 11. What can I do?

gogolon avatar Apr 26 '21 11:04 gogolon

Did you install Xamarin.AndroidX.Fragment v1.2.5.4 ? or a newer one? looks like some investigation may need to be done.

jamesmontemagno avatar Apr 26 '21 20:04 jamesmontemagno

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.

gogolon avatar Apr 27 '21 05:04 gogolon

Same here, any new infos on this?

I cannot reproduce, but I can see it on Google ARNs image

DevEddy avatar Apr 27 '21 12:04 DevEddy

@gogolon earlier someone said rolling back to 1.2.5.4 fixed their issue.

jamesmontemagno avatar Apr 27 '21 21:04 jamesmontemagno

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.

nielsbrg avatar Apr 28 '21 07:04 nielsbrg

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.

DevEddy avatar Apr 30 '21 05:04 DevEddy

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.

image

xleon avatar May 11 '21 16:05 xleon

Confirmed that the workaround above fixed all of my crashes

image

As a side note: it happened to (random?) devices above Android 9+

xleon avatar May 14 '21 13:05 xleon

Can confirm the issue still persists without downgrading to 1.2.5.4. Is there an estimate for fixing this?

alexanderdibenedetto avatar May 27 '21 04:05 alexanderdibenedetto

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?

suggyd avatar May 27 '21 14:05 suggyd

Tested with 1.4.0 and still get same error...

I am able to reproduce with:

  1. Launch App
  2. Tap Home
  3. Run adb shell "am kill <PackageName>"
  4. Resume app... KABOOM!

1.2.5.4 has no error.

FYI @DevEddy @xleon @jamesmontemagno

AntRemo avatar Jun 07 '21 14:06 AntRemo

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.

EmilAlipiev avatar Jun 19 '21 15:06 EmilAlipiev

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

EmilAlipiev avatar Jun 19 '21 16:06 EmilAlipiev

any idea how can reproduce and solve this? this is really getting annoying 100s of crashes

EmilAlipiev avatar Jun 24 '21 15:06 EmilAlipiev

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 avatar Jun 24 '21 16:06 pro777s

@pro777s - yes it did for me

suggyd avatar Jun 24 '21 16:06 suggyd

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 avatar Jun 24 '21 16:06 EmilAlipiev

@EmilAlipiev, I agree with you. I don't understand why there is no reaction from the Xamarin developers.

pro777s avatar Jun 24 '21 16:06 pro777s

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?

agusibrahim avatar Jun 26 '21 12:06 agusibrahim

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

EmilAlipiev avatar Jun 26 '21 13:06 EmilAlipiev