コンテンツの切り替え
今回はJetpack composeでボタンを押すごとにコンテンツを切り替えるプログラムに挑戦してみました。 と言ってもif文で表示する部品を切り替えているだけなのでシンプルなプログラムになっています。 環境はAndroid Studio Giraffe(2022.3.1)で作成しました。 初心者が書いたコードなので、ご利用の際は適宜修正してください。
MainActivity.kt
今回のメインとなるプログラムです。
ボタンを押すごとにフラグをON/OFFし、if文でフラグを判定して表示するコンテンツを切り替えています。
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import com.example.switch.ui.theme.SwipeableTheme
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
SwipeableTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
ContentSwitchingExample()
}
}
}
}
}
@Composable
fun ContentSwitchingExample() {
// Stateを使ってボタンが押されたかどうかを追跡します
var isContentChange by remember { mutableStateOf(false) }
// コンテンツを切り替える関数
fun toggleContent() {
isContentChange = !isContentChange
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
// ボタンを配置します
Button(onClick = { toggleContent() }) {
Text(text = if (isContentChange) "Content A" else "Content B")
}
// コンテンツを切り替えます
if (isContentChange) {
Text(
text = "Content A",
modifier = Modifier.padding(top = 16.dp)
)
} else {
Text(
text = "Content B",
modifier = Modifier.padding(top = 16.dp)
)
}
}
}
今回のプログラムを実行した結果です。ボタンを押すごとにコンテンツAとコンテンツBが切り替わります。
シンプルに実装できるのは好印象ですね。 動的にコンテンツを切り替える機会は結構あるかも知れませんので覚えておきましょう!
今回のプログラムは理解できましたか?
よく分からないという人は実際に自分で実装して少しずつ理解していきましょう!