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

Итак, я знаю, что в 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) } 

Умения, использующие Kotlin для Android, почти одинаковы, нам просто нужно немного изменить синтаксис, как показано ниже.

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

Исключение, которое вы получаете, – это исключение null-указателя в вашем методе onCreate для активности, пожалуйста, проверьте то же самое.

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

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

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

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

Намерения в android kotlin могут использоваться как указано ниже.

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

Кроме того, исключение, которое вы получаете, существует в вашем методе onCreate .

У вас есть исключение с нулевым указателем в методе 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)