KotlinでAndroidアプリ開発 2. Intent
Author: 水卜
Author: 水卜
buttonに対してon clickのイベントリスナーを設定し、そこに画面遷移の処理を書く。
androidの画面遷移は遷移先を入れたintentをstartActivityに突っ込む。
値を渡したければputExtraでkey:value方式で設定可能。
sendButton.setOnClickListener {
val intent = Intent(application, Main2Activity::class.java)
intent.putExtra("key1", "こんにちは")
startActivity(intent)
}
遷移先でfinish()を呼ぶと閉じて呼び出し元のActivityにもどる。
androidの戻るボタンをおしても同じ挙動になる。
もともとあるMainActivityに加えてMain2Activityをつくる
android studio画面左のエクスプローラからnew -> Activity
画面遷移のやり方が分かればいいのでconstraintは適当に入れてます。
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".Main2Activity"
android:label="画面2">
</activity>
<activity android:name=".MainActivity"
android:label="画面1">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
MainActivity.kt
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sendButton.setOnClickListener {
val intent = Intent(application, Main2Activity::class.java)
startActivity(intent)
}
}
}
activity_main.xmlにボタンとテキストビューを追加
<TextView
android:textSize="30sp"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="16dp"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="27dp" android:id="@+id/textView"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"/>
<Button
android:id="@+id/sendButton"
android:text="@string/move"
android:textSize="30sp"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="16dp"
android:layout_marginTop="39dp" app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"/>
Main2Activity.kt
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main2.*
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
returnButton.setOnClickListener{
finish()
}
}
}
strings.xml
<resources>
<string name="main">Main Activity</string>
<string name="move">MOVE</string>
<string name="sub">Sub Activity</string>
<string name="return_sub">RETURN</string>
</resources>