commons-app / apps-android-commons

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons
https://commons-app.github.io/
Apache License 2.0
1.01k stars 1.19k forks source link

[Bug]: Crash when changing from half-size to fullsize window #5784

Open mnalis opened 1 month ago

mnalis commented 1 month ago

Summary

when screen is split to two halfs, and image is shared to Commons app, if one attempts to resize Commons screen back to full height, it crashes

Steps to reproduce

  1. Open gallery app
  2. use Android feature to split-screen so gallery takes half of the screen
  3. share image to Commons app
  4. Commons normally opens half of the screen
  5. resize Commons screen to full size
  6. app crashes

Expected behaviour

no crash, but app goes to fullscreen

Actual behaviour

app crashes

Device name

Samsung Galaxy S23+

Android version

Android 14

Commons app version

5.0.2 (f-droid)

Device logs

FATAL EXCEPTION: main Process: fr.free.nrw.commons, PID: 32306 java.lang.RuntimeException: Unable to start activity ComponentInfo{fr.free.nrw.commons/fr.free.nrw.commons.upload.UploadActivity}: java.lang.IllegalStateException: Fragment already added: UploadMediaDetailFragment{4d419c2} (8741fca2-4834-4ec2-ba6a-2a3f56685034 id=0x7f090332) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4164) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4322) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6499) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6378) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:76) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.app.ActivityThread.main(ActivityThread.java:8919) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) Caused by: java.lang.IllegalStateException: Fragment already added: UploadMediaDetailFragment{4d419c2} (8741fca2-4834-4ec2-ba6a-2a3f56685034 id=0x7f090332) at androidx.fragment.app.FragmentStore.addFragment(FragmentStore.java:91) at androidx.fragment.app.FragmentManager.addFragment(FragmentManager.java:1713) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:415) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2404) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2162) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311) at androidx.fragment.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:274) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092) at androidx.viewpager.widget.ViewPager.setOffscreenPageLimit(ViewPager.java:856) at fr.free.nrw.commons.upload.UploadActivity.receiveSharedItems(UploadActivity.java:643) at fr.free.nrw.commons.upload.UploadActivity.checkStoragePermissions(UploadActivity.java:283) at fr.free.nrw.commons.upload.UploadActivity.onCreate(UploadActivity.java:190) at android.app.Activity.performCreate(Activity.java:8975) at android.app.Activity.performCreate(Activity.java:8944) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4146) ... 15 more

Screen-shots

No response

Would you like to work on the issue?

None

nicolas-raoul commented 1 month ago

I am not getting a crash, but I probably did not do exactly as you did, for instance I end up with 2 Commons apps running in parallel. Would you mind sharing a screencast?

mnalis commented 1 month ago

Here is example video, sharing from Fossify Gallery (but I get crash when shared from Vespucci or Ghost Commander image viewer etc. too, so it probably does not matter which app does the sharing):

https://github.com/user-attachments/assets/6c29eb8a-c526-425c-b8ba-914adb12c864