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!!
}