Describe the bug
On a fresh installation when I go to the menu and select Clear All Notes the app crashes.
Steps to reproduce the behavior:
Environment
Logs
2019-07-21 20:27:09.569 22494-22494/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.kiwix.kiwixmobile, PID: 22494
java.lang.RuntimeException: Unable to resume activity {org.kiwix.kiwixmobile/org.kiwix.kiwixmobile.main.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(int)' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4190)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4222)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7319)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(int)' on a null object reference
at org.kiwix.kiwixmobile.main.AddNoteDialog.getTextAfterLastSlashWithoutExtension(AddNoteDialog.java:185)
at org.kiwix.kiwixmobile.main.AddNoteDialog.getZimNoteDirectoryName(AddNoteDialog.java:164)
at org.kiwix.kiwixmobile.main.AddNoteDialog.onCreate(AddNoteDialog.java:95)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2414)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at androidx.fragment.app.FragmentController.execPendingActions(FragmentController.java:391)
at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:517)
at org.kiwix.kiwixmobile.main.MainActivity.onResume(MainActivity.java:1535)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1446)
at android.app.Activity.performResume(Activity.java:7920)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4180)
@Aditya-Sood It would be great if you can remove all the lint warnings from this file. At least the code we're writing now should be clean so that we can clean codebase bit by bit. You just have to go to Analyze -> Inspect Code...
@abdulwd the app doesn't crash on my device on the re-installed version, gives the "No notes found for deletion" toast as it should. Can you check on your device as well? (could be a discrepancy between working on emulator & a device)
Meanwhile I'll try and work out what went wrong lower in the stack trace
The next time I click Clear All Notes I get this toast. You just have to add a null check to prevent this crash.
Thing is, clearing notes does not open 'Add note dialog'. I'm trying to figure out why it's being opened in the first place.
Thing is, clearing notes does not open 'Add note dialog'. I'm trying to figure out why it's being opened in the first place.
Still trying to work out why this happened, but #1305 fixes the crash
@Aditya-Sood the app still crashes on my device
@geekRishabhjain can you share the logs?
@Aditya-Sood
Here is the log:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.kiwix.kiwixmobile, PID: 24655
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(int)' on a null object reference
at org.kiwix.kiwixmobile.main.AddNoteDialog.getTextAfterLastSlashWithoutExtension(AddNoteDialog.java:185)
at org.kiwix.kiwixmobile.main.AddNoteDialog.getZimNoteDirectoryName(AddNoteDialog.java:164)
at org.kiwix.kiwixmobile.main.AddNoteDialog.onCreate(AddNoteDialog.java:95)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2414)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7156)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
@geekRishabhjain you can confirm this is using the latest code on develop branch?
I suspect not as AddNoteDialog line 185 for me is
}
Develop is what we use as our branch for development.
Master is what we (will) use for releases of the app.
See our CONTRIBUTING
@macgills yeah. My mistake, absolutely sorry. I thought diving directly into the code is a good idea, but I think I need to read the documentation.
The enthusiasm is appreciated and thank you for reporting! Hope to see contributions from you
@geekRishabhjain does the problem persist for you after using develop?