内容
この記事ではMaterial3を利用したタブをコード上で操作する方法を書いています。
今回は、QRスキャンと画像からQRを読み込む機能を入れたタブを作成しました。

このタブは下記のような動作を想定しています。

上記フローにおいて画像読み込みをクリック後に画像選択をキャンセルした場合にスキャンにタブ位置が戻るようにします。この設定を行わない場合画像読み込みにタブの選択状況がなったままスキャン画面が表示されてしまいます。
コード
override fun onRestart() {
super.onRestart()
val tabLayout = binding.tabLayout
tabLayout.getTabAt(0)?.select()
}
このコードはアクティビティ内に書いています。タブには左から0->1->2と番号が振られているのでこの仕組みを利用して元に戻します。onRestartで処理を行う理由として画像選択時に画像選択のアクティビティが生成されているためです。