问题说明
日志堆栈信息1:
1.Caused by: java.lang.IllegalArgumentException: Wrong argument type for 'productId' in argument bundle. string expected.
2. at androidx.navigation.NavDestination.addInDefaultArgs(SourceFile:12)
3. at androidx.navigation.NavController.navigate(SourceFile:43)
4. at androidx.navigation.NavController.navigate(SourceFile:22)
5. at androidx.navigation.NavController.navigate(SourceFile:3)
6. at androidx.navigation.NavController.navigate(SourceFile:2)
7. at com.model.BugActivity.initBinding(SourceFile:16)
8. at com.model.base.BaseActivity2.onCreate(Native Method)
9. at com.model.BugActivity.onCreate(Native Method)
10. at android.app.Activity.performCreate(Activity.java:7144)
11. at android.app.Activity.performCreate(Activity.java:7135)
12. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
13. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
14. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
15. at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
16. at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
17. at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
18. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
19. at android.os.Handler.dispatchMessage(Handler.java:106)
20. at android.os.Looper.loop(Looper.java:193)
21. at com.model.libcrashprotect.b.d(SourceFile:1)
22. at com.model.libcrashprotect.a.run(Unknown Source:2)
23. at android.os.Handler.handleCallback(Handler.java:873)
24. at android.os.Handler.dispatchMessage(Handler.java:99)
25. at android.os.Looper.loop(Looper.java:193)
26. at android.app.ActivityThread.main(ActivityThread.java:6718)
27. at java.lang.reflect.Method.invoke(Native Method)
28. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
29. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
日志堆栈信息12:
Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method m.e0.d.l.e, parameter mProductId
at com.model.editcomment.PublishManager.<init>(Unknown Source:12)
at com.model.editcomment.BugActivity2.initViewModel(SourceFile:7)
at com.model.base.BaseActivity2.onCreate(Native Method)
at com.modle.editcomment.BugActivity2.onCreate(Native Method)
at android.app.Activity.performCreate(Activity.java:7144)
at android.app.Activity.performCreate(Activity.java:7135)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
分析解决
【根本原因】若路由跳转页面没传参数时,使用@Autowire初始化参数对象无效,对象为null
【解决方案】使用常规获取跳转参数的方式:getIntent.getString()
【代码定位】可从log7、8、9中 model.BugActivity.initBinding定位报错相关类,或从听云中【异常溯源】中定位具体类
相关代码
出现问题代码:
@JvmField
@Autowired(name = CommConst.PRODUCT_ID)
var mProductId: String = ""
若路由跳转页面没传CommConst.PRODUCT_ID参数时,使用@Autowire初始化的对象无效,mProductId对象为null,而非mProductId: String = “”
解决:使用常规getIntent()获取参数方法
解决后代码:
mProductId = intent.getStringExtra(CommConst.PRODUCT_ID)?: ""
写在最后
此文章为个人修复bug时记录,有时时间有限,无法深入研究,若看到此文章后有其他见解或解决方式,欢迎留言交流???
————————————————
版权声明:转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44158429/article/details/122410712
版权声明:本文为weixin_44158429原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。