web-dev-qa-db-ja.com

コトリンのインテント

だから、Javaではこれを使って新しいActivityを起動することを知っている

Intent intent = new Intent(this, SomeActivity.class);
startActivity(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) 
20
Pavel Bredelev

疑問符)があることを確認してください:

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

代わりに:

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

AndroidにKotlinを使用するインテントはほとんど同じですが、以下のように構文を少し変更するだけです。

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

取得している例外は、アクティビティのonCreateメソッドのnullポインター例外です。同じことを確認してください。

26
AaRiF

新しいアクティビティを開くために使用する最短かつ最も簡単な方法

startActivity(Intent(this@MainActivity, NextActivity::class.Java))

追伸:ここで注意すべき主なポイントの1つは、Intent()が最初のパラメーターとしてpackageContextを期待しているため、単にthisを使用するとエラーがスローされることです。

したがって、クラス名を明示的に定義する必要があります。上記の行に示すように(this @ MainActivity)

7
Gaurav Sarma

このページ で説明したように、Ankoは、インテントを作成したり、エクストラを追加したり、関数を呼び出したりすることなく、他のアクティビティに移動するためのNice関数も提供します。

すべてを1行で実行できます。

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

これにより、関数がパラメーターとして受け取るペアのリストで指定された値を使用して、インテントの追加セットが作成されます。

4

Android kotlinのインテントは、以下のように使用できます。

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

さらに、取得している例外はonCreateメソッドに存在します。

1
Android.Dev17
  1. たとえば、アプリケーションインスタンスのシングルトンクラスを作成します。

クラス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)
    
0
rakesh rajput

新しいアクティビティのonCreateメソッドでnullポインター例外が発生しています。 onCreateメソッドを確認してください。

0
Ruchira Randana