0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画面の結果を受け取る

Posted at

画面を閉じた時に前の画面の結果によって処理を分ける方法をメモします。ActivityResultContracts.StartActivityForResultを使用します。
Activity → Activityの遷移で結果を受け取る方法です。

呼び出し元

class MainActivity : AppCompatActivity() {

    private val launcher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { result ->
        when (result.resultCode) {
            RequestCode.OK.id -> {
                // 成功処理
            }
            RequestCode.CANCEL.id -> {
                // 処理がキャンセルされた
            }
            RequestCode.FAILED.id-> {
                 // 処理成功
            }
        }
    }

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

        button.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            launcher.launch(intent)
        }
    }
}

呼び出し先

class ResultActivity : AppCompatActivity() {

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

        button.setOnClickListener {
            try {
                if (false) {// なんらかの条件の時
                    setResult(RequestCode.CANCEL.id)
                    finish()
                }


                setResult(RequestCode.OK.id)
                finish()
            } catch (e: Throwable) {
                setResult(RequestCode.FAILED.id)
                finish()
            }
        }
    }
}

リクエストコード

enum class RequestCode(val id: Int) {
    ALL(1000),
    CANCEL(1001),
    FAILED(1002),
}

呼び出し先でfinishする際に処理の判断によってsetResultの中身を変えています。
結果の判断方法としてActivity.RESULT_OKActivity.RESULT_FIRST_USERがありますが、こちらはコードの処理の意図がわかりにくいため、成功・キャンセル・失敗の値を自分で作成して使用します。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?