記事ディレクトリ
序文
この記事では、主に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