목록안드로이드/인강 (28)
야금야금 공부
history 버튼에 보여줄 DB를 설정해주었다. [ model 패키지 ] 지난번에 model 패키지를 새로 만들어 DB파일을 만들어 주었는데 오늘 마저 진행해주었다. 오늘은 Dao 패키지를 작성해 history에서 DB에 실행할 기능을 만들어 주었다. 추가적으로 4-1번의 기능도 알려주셨다. package com.example.calculator.model import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey @Entity data class History ( // unique id @PrimaryKey val uid: Int?, @ColumnInfo(name = "expression") va..
오늘은 clearButtonClicked과 resultButtonClicked 함수를 정의해주었다. 1. clearButtonClicked 함수 초기화시키는 함수로 결과와 연산화면을 초기화한다. 그리고 Operator도 기존의 값인 false로 다시 초기화시켜준다. fun clearButtonClicked(v: View) { expressionTextView.text = "" resultTextView.text = "" isOperator = false hasOperator = false } 2. resultButtonClicked 함수 (숫자와 연산자 숫자) 의 형태가 아닌 것은 모두 예외처리를 해주고, DB에 연산과정을 저장하기 위해 아래에 변수 2가지를 새로 만들어 주었다. 그리고 마지막에는 ' =..
오늘은 historyLayout을 정의하는 코드를 구현하였다. 1. closeHistoryButtonClicked history부분을 닫는 역할. historyLayout을 보이지 않게 설정하면 닫기 버튼처럼 활용할 수 있다. fun historyButtonClicked(v: View) { historyLayout.isVisible = true // TODO 디비에서 모든 기록 가져오기 // TODO 뷰에 모든 기록 할당하기 } fun closeHistoryButtonClicked(v: View) { historyLayout.isVisible = false } fun historyClearButtonClicked(v: View) { // TODO 디비에서 모든 기록 삭제 // TODO 뷰에서 모든 기록 ..
계산 결과를 실시간으로 나타내주는 기능을 넣을 차례이다. 1. calculateExpression 함수 구현 계산 결과를 resultTextView에 넣을 수있게 계산을 해주는 함수이다. 먼저 오류가 발생할 수 있는 예외사항을 잡아주었다. operator가 없고, (숫자 + 연산자 + 숫자) 형태가 아닌 경우 연산자 앞뒤의 숫자가 숫자가 아닌 경우 val expressionText = expressionTextView.text.split(" ") // hasOperator 가 없거나 expressionText의 크기가 3(숫자, 연산자, 숫자)이 아닐 경우 -> ㅇㅖ외 if (hasOperator.not() || expressionText.size != 3){ // ""을 넣어 초기화해 줌 return ..
어제 게시글에서 빠뜨렸는데 구현해준 기능에 대한 설명을 안 적어서 오늘 추가로 적을 예정이다. when 구문을 사용하여 isOperator가 true일 경우와 hasOperator가 true일 경우를 나타내었다. 1. isOperator = true이면, 연산자가 한번 눌러졌다는 뜻이다. 처음에 연산자를 한번 누르면 when의 else부분이 실행된다. 따라서 연산자가 추가된 후 isOperator가 true가 되고, 한번 더 누르면 isOperator가 true여서 true부분이 실행된다. expressionTextView의 제일 마지막 부분이 연산자이기 때문에 제거해야한다. dropLast(1)을 이용해 마지막 연산자를 제거한 후 새로 눌러준 연산자를 넣어준다. => 연산자 수정 완료! 2. hasOp..
어제에 이어 계산기 기능을 마저 구현해주었다. 구현 후 숫자버튼을 아무리 눌러도 아무것도 뜨지않아서 xml를 확인했더니, expressionTextView 에 height를 0dp를 주었지 뭐람 ㅎㅎ 다시 wrap_content로 바꾸어 주었더니 알맞게 잘 나왔다. 연산자가 하나만 나와야하는데 자꾸 연속으로 나오길래 무엇이 잘못됐는지 한참 찾았다. 연산자에 operatorButtonClicked 함수를 연결해주었어야 했는데 작성하다보니 numberButtonClicked 를 연결해준 것^^ 다른 오류 사항 실행시켰더니 연산자 뒤의 수가 한칸씩 공백이 들어간 형태로 출력되었다. 중간에 isOperator를 false로 안해줘서 일어난 것 같아 수정해주었다. 이 부분인데 아래의 isOperator = fal..