我在我的kotlin应用程序中使用Android。我有一个UserViewModel类,它拥有应用程序所需的所有与用户相关的数据。
class UserViewModel(application: Application) : AndroidViewModel(application) {
val currentUid = MutableLiveData<String>()
var currentUser = MutableLiveData<User>()
// More code here...
}currentUser在启动时从火药库中获取,并可供所有活动使用。我想访问currentPlan对象在User中。我这样做:
someFunc(userViewModel.value!!.currentPlan!!)这在我MainActivity中的MainActivity中很好。HomeFragment有一个消息按钮,它将用户带到ChatActivty。
问题是,当我在ChatActivity中执行相同的函数调用时,会得到以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.**, PID: 30420
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.makeshaadi/com.makeshaadi.ChatActivity}: kotlin.KotlinNullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
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:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Caused by: kotlin.KotlinNullPointerException
at com.makeshaadi.ChatActivity.onCreate(ChatActivity.kt:52)
at android.app.Activity.performCreate(Activity.java:7224)
at android.app.Activity.performCreate(Activity.java:7213)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
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:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
I/Process: Sending signal. PID: 30420 SIG: 9为什么userVM.value在ChatActivity中变为空。我做错了什么?
发布于 2020-08-24 15:41:10
更新:创建类UserRepository并注入单例UserRepository (手动或Dagger、Koin、.)
https://stackoverflow.com/questions/63564150
复制相似问题