KotlinはAndroidプログラムを実装しています


序文

この記事では、主にAndroidコンポーネントでアクティビティを実現するためのKotlinの基本的な使用法を紹介します。主に、アクティビティ間をジャンプし、アクティビティ間で値を転送します。


1つは、Kotlinを使用してAndroidプログラムを作成する

1. Kotlin言語の作成を選択します
ここに写真の説明を挿入
(2)作成プロセス中に障害の問題が発生します。基本的な理由はAndroid Studioのバージョンが小さいためです。プロンプトに従ってAndroid Studioを更新し
ます(3)Kotlinクラスを作成し、Kotlinの作成を選択し、同時にクラスを選択します。
ここに写真の説明を挿入
ここに写真の説明を挿入

(4)java1と同じアクティビティを作成します
ここに写真の説明を挿入

2つ目は、アクティビティ間をジャンプする

MainActivityにはButtonボタンのみが含まれ、SecondActiviyにはTextViewが含まれ、レイアウトが単純すぎて表示されません。ここでは1つのIDのみが表示され、IDは後で役立ちます。

android:id="@+id/button"  //Button的ID
  android:id="@+id/tv_contnet" //TextView的ID

クリックボタンを実装してインターフェイスにジャンプしたいので、最初にJavaがどのようにジャンプするかを見てみましょう。

Javaコード

 btn = findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View view) {
    
    
                Intent intent =new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });

Kotlinでは、コントロールを取得する必要はありません。代わりに、アクティビティのIDと同じ値を直接書き込んで、イベントを取得および設定でき
ここに写真の説明を挿入
ます。コードヒントから知ることができますクリックイベントを作成するときは、2番目の
ここに写真の説明を挿入
Kotlinコードを選択します。

button.setOnClickListener {
    
    
    Intent(this, SecondActivity::class.java).apply {
    
    
        startActivity(this)
    }
}

Kotlinはコードの量を単純化していることがわかります。上記のコードに慣れていない場合、または一度も使用したことがない場合は、以前にJavaを作成したように、複数のコードがあるのが普通です。練習は完璧を作る

3、アクティビティ間でパラメータを転送します

一般的なタイプ

Javaパラメータ転送

在这里插入代码片

コトリンパッセージ

パスパラメータ

button.setOnClickListener {
    
    
    Intent(this, SecondActivity::class.java).apply {
    
    
        putExtra("name","mt")
         putExtra("age",18)
        startActivity(this)
    }
}


ここでパラメータを受け入れ、インテントを直接渡します。Javaのようにインテントインテント= getIntent()に移動する必要はありません。

       var name = intent.extras?.getString("name")
     tv_contnet.text =name

一般的でないタイプの場合はシリアル化可能

SerializableまたはParcelableインターフェースを実装することで実現できます
1.Serializable

    class SeriUser :Serializable {
    
    
    var name:String?="serializeable"
    var age:Int=1000
}

パスパラメータ

          Intent(this, SecondActivity::class.java).apply {
    
    
             putExtra("user", SeriUser())
               startActivity(this)
           }

パラメータを受け入れます(最後にSeriUserとして追加する必要があることに注意してください。追加しないと、エラーが報告されます)

 //        非普通类型,且时Serializable
        var serUsers =intent.getSerializableExtra("user") as SeriUser
        tv_contnet.text=serUsers.name
        

非一般的なタイプのパーセル可能

2.パーセル可能


class User() :Parcelable {
    
    
    var name:String?="test name"
    var age:Int =100
    constructor(parcel: Parcel) : this() {
    
    
    //必须实现
        name =parcel.readString()
        age =parcel.readInt()
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
    
    
    //必须实现
        parcel.writeString(name)
        parcel.writeInt(age)

    }

    override fun describeContents(): Int {
    
    
        return 0
    }

    companion object CREATOR : Parcelable.Creator<User> {
    
    
        override fun createFromParcel(parcel: Parcel): User {
    
    
            return User(parcel)
        }

        override fun newArray(size: Int): Array<User?> {
    
    
            return arrayOfNulls(size)
        }
    }
}

パスパラメータ

            Intent(this, SecondActivity::class.java).apply {
    
    
                putExtra("user", User())
                startActivity(this)
            }

パラメータを受け入れる

//        非普通类型,且时Parcelable
       var user =intent.getParcelableExtra<User>("user") as User
       tv_contnet.text =user.name

おすすめ

転載: blog.csdn.net/qq_45353823/article/details/108905468