[Android Studio]

Jean·2023년 8월 8일
0

설명:
연락처를 저장하는 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 = "삭제")
        }
    }
}
profile
아 왜 안돼

0개의 댓글