学習記録帳&Apps

学習記録帳と、同じ開発者によるその他のAppに関する公式ページです。

【kotlin】画面遷移をして戻ってくる。コードでデータのやり取り実装

f:id:ibarakito:20190821032626p:plain

メモ:
・画面遷移だけであればstartActivity()でOK
・データのやり取りは共通のIDを使って行う
・遷移先の要素のIDを探して直接書き込む手法などもある。xmlでレイアウトしている場合など?

データをやりとりするための共通のIDなどを定義

     //メッセージに割り当てる識別文字列
     companion object {
        const val EXTRA_MESSAGE = "message_no_shikibetsu_id"

    }
    //SubActivityに割り当てる任意のID
    private val RESULT_SUBACTIVITY = 9999

ボタンを押してTimeDialogクラスに遷移。ボタンのテキストを遷移先に渡す

           button.setOnClickListener {
                val intent = Intent(this, TimeDialog::class.java)
                intent.putExtra(EXTRA_MESSAGE, button.text)
                startActivityForResult(intent, RESULT_SUBACTIVITY)
            }

遷移先から戻る。strをメッセージとして遷移元に渡す

       //遷移元から値を受け取る
       val message = intent.extras?.getString(MainActivity.EXTRA_MESSAGE) ?: "Null"

       //戻るボタンを押して遷移元に戻る。strをメッセージとして遷移元に渡す
       back.setOnClickListener {
            val intentSub = Intent()

            val str = ”some message”
            intentSub.putExtra(MainActivity.EXTRA_MESSAGE, str)

            setResult(Activity.RESULT_OK, intentSub)
            finish()
        }

MainActivity.ktで遷移先のfinish()に対応してデータを受け取る

    override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
        super.onActivityResult(requestCode, resultCode, intent)

        if (resultCode == Activity.RESULT_OK &&
            requestCode == RESULT_SUBACTIVITY && intent != null) {

            // メッセージの受け取り
            val res = intent.extras?.getString(EXTRA_MESSAGE)?: "Null"
        }
    }
プライバシーポリシー / お問い合わせ