LoginSignup
0
0

More than 1 year has passed since last update.

Activity からの戻り値を取得する方法

Last updated at Posted at 2021-09-12

環境

Android Studio で、Empty Compose Activity を使用して空のプロジェクトを作成しています。Empty Compose Activity は、Android Studio のバージョンである Arctic Fox をインストールすることで表れます。

実装

Activity の状態が STARTED になる前に、registerForActivityResult を使って ActivityResultLauncher を作成します。今回は、Activity からの文字列をただ単に標準出力に出力することにします。

class MainActivity : ComponentActivity() {
  private val startForResult =
    registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
      if (it.resultCode == Activity.RESULT_OK) {
        println(it.data?.getIntExtra("PENGUIN", 0))
      }
    }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      Button(onClick = ::move) { Text("click me!") }
    }
  }

  private fun move() {
    val intent = Intent(this, SubActivity::class.java)
    startForResult.launch(intent)
  }
}

SubActivity は次のように実装します。

class SubActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      Button(onClick = ::move) { Text("click me!") }
    }
  }

  private fun move() {
    val intent = Intent().apply { putExtra("PENGUIN", 100) }
    setResult(Activity.RESULT_OK, intent)
    finish()
  }
}

まとめ

registerForActivityResult を呼ぶタイミングに気をつけるだけで良さそうです。

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