在Kotlin的意图
所以,我知道在Java中我们使用这个来启动新的Activity
Intent intent = new Intent(this, SomeActivity.class); startActiviry(intent);
但是我正在使用Kotlin写一个项目,所以在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 for Android的意图几乎是相同的,我们只需要在下面的语法中稍微改变。
val intent = Intent(this,HelloActivity::class.java) startActivity(intent)
您所得到的异常是您的onCreate
方法中的空指针异常,请检查相同的..
Anko还提供了一些很好的功能来导航到其他活动,而不需要创建一个意图,添加附加功能或调用功能。
一切都可以在一行中完成:
startActivity<DetailActivity>("id" to 2, "name" to "Kotlin")
这将为该意图创建一组附加值,其中该值是由该函数正在接收的对列表所指定的值作为参数。
android kotlin中的intents可以像下面给出的一样使用。
val intent = Intent(this,YourActivity::class.java) startActivity(intent)
此外,你得到的例外存在于你的onCreate
方法。
您在新活动的onCreate
方法上onCreate
指针异常。 请检查onCreate
方法。
- 为应用程序实例创建单例类,例如:
class MyApp:Application(){
override fun onCreate() { super.onCreate() instance = this } companion object { lateinit var instance: MyApp private set }
}
-
那么在调用它之后你需要应用程序对象实例。 例如 :
val intent: Intent = Intent(MyApp.instance, DestinationActivity::class.java); MyApp.instance.startActivity(intent)