설명:
연락처를 저장하는 Compose 코드 작성
(디자인 전)
#MainActivity
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
PersonalInfo2Theme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
var context = LocalContext.current
val db = remember { AppDatabase.getDatabase(context) }
val userList by db.userDao().getAll()
.collectAsState(initial = emptyList())
val scope = rememberCoroutineScope()
var name by remember { mutableStateOf("") }
var savedname by remember { mutableStateOf("") }
var email by remember { mutableStateOf("") }
var savedemail by remember { mutableStateOf("") }
var phone by remember { mutableStateOf("") }
var savedphone by remember { mutableStateOf("") }
var age by remember { mutableStateOf("") }
var savedage by remember { mutableStateOf("") }
var uid by remember { mutableStateOf(0) }
Box(modifier = Modifier.fillMaxSize()) {
Column(
modifier = Modifier.align(Alignment.Center),
horizontalAlignment = Alignment.CenterHorizontally
) {
TextField(
value = name,
onValueChange = { name = it },
label = { Text(text = "enter your name") },
placeholder = { Text(text = "") },
)
TextField(
value = email,
onValueChange = { email = it },
label = { Text(text = "enter your email") },
placeholder = { Text(text = "") }
)
TextField(
value = phone,
onValueChange = { phone = it },
label = { Text(text = "enter your phone") },
placeholder = { Text(text = "") }
)
TextField(value = age,
onValueChange = { age = it },
label = { Text(text = "enter your age") },
placeholder = { Text(text = "") }
)
Button(onClick = {
savedname = name
savedemail = email
savedphone = phone
if (age.toIntOrNull() == null) {
age = "0"
}
savedage = age
val newUser = User(
uid = uid,
name = name,
email = email,
phone = phone,
age = age.toInt()
)
scope.launch(Dispatchers.IO) {
db.userDao().insertAll(newUser)
}
}) {
Text(text = "등록")
}
Spacer(
modifier = Modifier
.width(20.dp)
)
Box(
modifier = Modifier
.padding(20.dp)
) {
val scrollState = rememberScrollState()
Column {
Text(text = "이름 : $savedname")
Text(text = "이메일 : $savedemail")
Text(text = "전화번호 : $savedphone")
Text(text = "나이 : $savedage")
Button(onClick = {
val intent1 = Intent(context, MainActivity2::class.java)
intent1.putExtra("uid", uid)
intent1.putExtra("name", savedname)
intent1.putExtra("email", savedemail)
intent1.putExtra("phone", savedphone)
intent1.putExtra("age", savedage)
context.startActivity(intent1)
}) {
Text(text = "연락처 정보 보기")
}
}
}
}
}
}
}
}
}
}
#MainActivity2
class MainActivity2 : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent() {
PersonalInfo2Theme {
var context = LocalContext.current
val db = remember { AppDatabase.getDatabase(context) }
val userList by db.userDao().getAll()
.collectAsState(initial = emptyList())
LazyColumn {
items(userList) { user ->
UserItem(user = user, db)
}
}
}
}
}
}
@Composable
fun UserItem(user: User, db: AppDatabase) {
val scope = rememberCoroutineScope()
Column {
Text(text = "user uid : ${user.uid}")
Text(text = "user name : ${user.name}")
Text(text = "user email : ${user.email}")
Text(text = "user phone : ${user.phone}")
Text(text = "user age : ${user.age}")
Button(onClick = {
scope.launch(Dispatchers.IO) {
db.userDao().delete(user)
}
}) {
Text(text = "삭제")
}
}
}