Android 如何在Kotlin中初始化片段中的意图?
我得到一个空指针异常 日志:Android 如何在Kotlin中初始化片段中的意图?,android,android-fragments,kotlin,nullpointerexception,Android,Android Fragments,Kotlin,Nullpointerexception,我得到一个空指针异常 日志: 2020-07-05 10:42:52.821 20008-20008/com.riddhi.nfine E/AndroidRuntime: FATAL EXCEPTION: main Process: com.riddhi.nfine, PID: 20008 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.riddhi.nfine/com.riddhi.nfi
2020-07-05 10:42:52.821 20008-20008/com.riddhi.nfine E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.riddhi.nfine, PID: 20008
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.riddhi.nfine/com.riddhi.nfine.Income.AddBankFragment}: kotlin.KotlinNullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2843)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
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:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
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)
Caused by: kotlin.KotlinNullPointerException
at com.riddhi.nfine.Income.AddBankFragment.<init>(AddBankFragment.kt:195)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
at android.app.Instrumentation.newActivity(Instrumentation.java:1215)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2831)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
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:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
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)
}在附加片段之前,您不能调用
getActivity
(即val intent=activity!!.intent!!
)中的activity
),即在onatach(Context)
、onCreate()
或之后的任何方法中。因此,您可以将意图设置为lateinit var
,并在onCreate()方法中初始化它:
private lateinit var intent: Intent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
intent = activity!!.intent!!
}
请注意,如果您使用activity()
而不是活动代码>,您将得到一条更具描述性的错误消息,该消息将确切地告诉您它为null的原因(片段尚未附加)
private lateinit var intent: Intent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
intent = activity!!.intent!!
}