今いるActivityから別のActivityに移動する(同じアプリ内):Android(Kotlin)
やりたい事
ポイント:Intent(インテント)<明示的な使い方>
val intent = Intent(this, 新たに開始するActivityのクラス名::class.java) // (1)
startActivity(intent) // (2)
① 『今いるActivity』と『新たに開始するActivity』についての情報をIntentにセットする
② Intentに記述された情報に基づき、Androidが、新たなActivityを開始する
キーワード
Activity:1つのユーザーインターフェースで1つの画面を表すもの。
Intent:アクションを要求するメッセンジャーのようなもので、Intent(≒行いたいことの意図・目的)をAndroidに送ることで、新たなアクションを行うこと(Activityの開始等)ができる。
なお、Intentは大きく『明示的Intent』と『暗黙的Intent』に分かれる。
明示的Intent:主に、移動先(開始したいActivity)が明らかになっている、同じアプリ内でのActivity間の移動のために使われる
暗黙的Intent:「メールを送りたい(+送信先・内容)」「電話を掛けたい(+相手の電話番号)」などの意図・目的をAndroidに伝えると、Android側でマニュフェストファイル内に記述のあるコンポーネントの中から適切なものを選んで開始してくれる
※ 情報(ex. メールの送信先や文面・タイトル)を渡すのもIntentの役目
void startActivity (Intent intent):Intentに基づき、Activityを開始する
サンプルコード
MainActivity.kt
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.widget.Button
import android.widget.LinearLayout
import android.widget.LinearLayout.*
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// レイアウトの生成
val txt = TextView(this) // テキストビューを用意
val btn = Button(this) // ボタンを用意
LinearLayout(this).apply {
orientation = LinearLayout.VERTICAL
}.let{
setContentView(it)
// TextViewの生成
it.addView(txt.apply{
text = "ここはメイン画面です"
textSize = 35F
gravity = Gravity.CENTER // 中央揃え
})
// ボタンの生成
it.addView(btn.apply {
text = "サブ画面へ移動"
layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
})
}
// ボタンが押された時の処理
btn.setOnClickListener {
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)
}
}
}
SubActivity.kt
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.widget.LinearLayout
import android.widget.TextView
class SubActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// レイアウトの生成
val txt = TextView(this) // テキストビューを用意
LinearLayout(this).apply {
orientation = LinearLayout.VERTICAL
}.let{
setContentView(it)
// TextViewの生成
it.addView(txt.apply{
text = "ここはサブ画面です"
textSize = 35F
gravity = Gravity.CENTER
})
}
}
}
参考
『ガイド:アプリケーションの基礎』Android Developers Docs
『ガイド:インテントとインテント フィルタ』Android Developers Docs
『リファレンス:Intent』Android Developers Docs
『リファレンス:startActivity』Android Developers Docs
この記事が気に入ったらサポートをしてみませんか?