kotlinでの画面遷移と情報のやりとりの基本。

 画面遷移元では、このように記述

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //ボタンのインスタンスを取得してイベントを設定する
        val button: Button = findViewById(R.id.button)
        button.setOnClickListener(onButtonClick)
    }

    //ボタンがタップされたときに発生するイベント
    val onButtonClick: View.OnClickListener = View.OnClickListener({
        val intent: Intent = Intent(this, SecondActivity::class.java)
        //strという名前で文字を登録
        intent.putExtra("str", "ぬるぽ")
        //第二引数は遷移先を区別するためのIDを記述する。自分で決めていい
        startActivityForResult(intent, 99)
    })

    //遷移先から戻ってきたときに発生するイベント
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (resultCode) {
            //遷移先でokかキャンセルされたかの二択 RESULT_CANCELED
            //遷移先でstr1の名前で登録されたデータを取得する
            Activity.RESULT_OK -> {
                val str1: String = data?.getStringExtra("str1") ?: ""
                Log.v("nullpo", requestCode.toString())
                Log.v("nullpo", str1)
            }
        }
    }
}

 画面遷移先では、このように記述して情報を得る


class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        //ボタンのインスタンスを取得してイベントを設定する
        val button2: Button = findViewById(R.id.button2)
        button2.setOnClickListener(onButton2Click)

        //名前strで登録された文字列を取得する
        val str: String = intent.getStringExtra("str")
        Log.v("nullpo", str.toString())
    }

    //okボタンが押されたとき
    val onButton2Click: View.OnClickListener = View.OnClickListener({
        //インテントを作成して名前str1をデータを登録
        val intent: Intent = Intent()
        intent.putExtra("str1", "ぬるぽした")
        //okボタンなのでRESULT_OKを返す。キャンセルの場合はRESULT_CANCEL
        setResult(Activity.RESULT_OK, intent)
        finish()
    })
}