apps-android-commons: [Bug]: App crashes when you click on Author Name
Summary
The app crashes when you click on Author Name of an image
Steps to reproduce
- Open the app
- Skip the login
- In the featured tab, open any image
- Click on the author name of the image
Expected behaviour
Details about the author should open
Actual behaviour
The app crashes
Device name
POCO X2
Android version
Android 11
Commons app version
4.0.3 prodDebug
Device logs
fr.free.nrw.commons E ACRA caught a NullPointerException for fr.free.nrw.commons
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at fr.free.nrw.commons.profile.achievements.AchievementsFragment.onCreateView(AchievementsFragment.java:184)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:310)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1185)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1354)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1432)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1495)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2167)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1990)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1945)
at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1816)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:303)
at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:238)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:25931)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:735)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
at android.view.View.measure(View.java:25931)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:25931)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7038)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:25931)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7038)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25931)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7038)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25931)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7038)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25931)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7038)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:767)
at android.view.View.measure(View.java:25931)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3524)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2344)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2605)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2068)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8402)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1058)
at android.view.Choreographer.doCallbacks(Choreographer.java:880)
at android.view.Choreographer.doFrame(Choreographer.java:813)
7577-7577 ACRA fr.free.nrw.commons E at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1043)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:7904)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
Screen-shots
No response
Would you like to work on the issue?
None
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 22 (22 by maintainers)
Achievements/leaerboard/contributions all load fine on my device even when not logged in, on the master branch.
Hopefully another core developer can reproduce the crash and test+merge the pull request.
Hi @joseearias, you can try accessing the user from the image information that the application fetches from the API call.
ImageInfo.javahas a method to access the user (Path: data-client/src/main/java/org/wikipedia/gallery/ImageInfo.java)@nicolas-raoul I used Pixel 6 Android 13 and I was able to reproduce the issue and was able to test the fix. Post Fix - The author’s page opened as follows -
Umm, that’s weird. The master branch still crashes for me. I tested on beta and prod debug, it crashes on both.
https://user-images.githubusercontent.com/75121767/230622917-0850dff9-4fbf-4b7b-ac9c-b358c9a6fe47.mp4
Hi. So then are we agreeing on opening the user details on the device browser for non-logged-in users? I think I know how to solve the problem now.
Crashing is never a good thing.
For non-logged-in users, how about open a web browser on the user’s Commons profile page? For instance https://commons.wikimedia.org/wiki/User:Syced
Making it accessible to everyone is another idea, but may be more complex, and non-logged-in users probably do not care much about authors.
If I understand correctly, tapping works when logged in, but crashes when not logged in? Great find, thanks!