Учреждения в Котлине

Итак, я знаю, что в Java мы используем это для запуска новой Activity

 Intent intent = new Intent(this, SomeActivity.class); startActiviry(intent); 

Но я пишу проект с помощью Kotlin, поэтому в Котлине это похоже на

 val intent = Intent(this,SomeActivity::class.java) startActivity(intent) 

Но он падает с проблемой

  FATAL EXCEPTION: main Process: com.pashabred.passlin, PID: 15243 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pashabred.passlin/com.pashabred.passlin.Enterring}: kotlin.KotlinNullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: kotlin.KotlinNullPointerException at com.pashabred.passlin.Enterring.onCreate(Enterring.kt:17) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Убедитесь, что у вас есть ( знак вопроса ):

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } 

Вместо:

 override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) } 

У вас есть исключение с нулевым указателем в методе onCreate нового действия. Проверьте метод onCreate .

  1. Создайте класс Singleton для экземпляра приложения, например:

Класс MyApp: Application () {

 override fun onCreate() { super.onCreate() instance = this } companion object { lateinit var instance: MyApp private set } 

}

  1. Затем после вызова его, где вам нужен экземпляр объекта приложения. например :

     val intent: Intent = Intent(MyApp.instance, DestinationActivity::class.java); MyApp.instance.startActivity(intent) 

Anko также предоставляет некоторые интересные функции для перехода к другой деятельности без необходимости создания намерения, добавления дополнительных функций или вызова функции.

Все можно сделать в одной строке:

 startActivity<DetailActivity>("id" to 2, "name" to "Kotlin") 

Это создаст набор дополнений для намерения со значениями, указанными в списке пар, которые функция получает в качестве параметра.