画面遷移
ボタンを押すと次の画面へ行く処理を作成します。
大まかな流れは以下の通り
- 遷移前の画面にボタン(次へ)を追加
- 遷移後の画面とボタン(前へ)を追加
- 遷移後の画面に対応するアクティビティを追加
- 遷移前の画面のアクティビティにボタン(次へ)の動作を追加
- 遷移後の画面のアクティビティにボタン(前へ)の動作を追加
- おまけ:遷移前の画面から遷移後の画面にテキストを渡す
1、遷移前の画面にボタン(次へ)を追加
まずは遷移前の画面にボタンを作成します。
res/activity_main.xmlを開き、
[デザイン]モードに切り替えてボタンをD&Gで追加します。
[コード]モードに切り替えて、IDとラベルを変更します。
※ここでは画面遷移に焦点を当てて説明するため、ボタンの大きさや位置などのカスタマイズは無視します。
android:id="@+id/next_button"
android:text="次へ"
2、遷移後の画面とボタン(前へ)作成
左ペインで右クリック →
[New(新規)] →
[Layout Resource File(レイアウトリソースファイル)]をクリックします。
とりあえず名前(今回はactivity_second)を付けて
[OK]を押下します。
遷移前の画面同様の手順で[戻る]ボタンを追加します。
IDとラベルは以下のようにします。
android:id="@+id/return_button"
android:text="戻る"
3、遷移後の画面用に対応するアクティビティを作成
左ペインで右クリック →
[New(新規)] →
[Kotlin Class/File]をクリックします。
とりあえず名前(今回はSecondActivity)を付けて
[OK]を押下します。
新しいアクティビティを追加したら、必ずマニフェストに登録します。
<activity android:name=".SecondActivity"></activity>
4、遷移前の画面のアクティビティにボタン(次へ)の動作を追加
MainActivityを開き、クラスのonCreate内にを以下のコードを追記します。
val button: Button = findViewById(R.id.next_button)
button.setOnClickListener{
//ここでintentインスタンスを生成(第2引数に遷移先のアクティビティ名を指定)
val intent = Intent(this, SecondActivity::class.java)
//生成したインスタンスを起動
startActivity(intent)
}
5、遷移後の画面のアクティビティにボタン(戻る)の動作を追加
SecondaryActivityを開き、クラスを以下のコードで置き換えます。
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val button: Button = findViewById(R.id.return_button)
button.setOnClickListener {
//画面を終了して前の画面に戻る
finish()
}
}
}
おまけ:遷移前の画面から遷移後の画面にテキストを渡す
遷移前の画面の遷移後の画面呼び出し(startActivity(intent))の前に以下を追加します。
"KEY"を使用して、次の画面に変数を渡します。任意の文字列を設定できますが、大文字が推奨されています。
val text="やっほー"
intent.putExtra("KEY",text)
遷移後のレイアウト画面に表示用のラベル(IDを「label1」に設定)を追加します。
(画面略)
遷移後のアクティビティに以下のコードを追加します。
(画面略)
val textID = findViewById(R.id.label1)
val text = intent.getStringExtra("KEY")
textID.setText(text)