오늘은 코틀린 시간에 일기장을 만들기 위한 기본 단계를 하였답니닷.
보여드릴게유.
package com.example.pro1121
import android.content.Context
import android.os.Bundle
import android.widget.Button
import android.widget.DatePicker
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import java.io.FileInputStream
import java.util.Calendar
class MainActivity : AppCompatActivity() {
lateinit var dp : DatePicker
lateinit var edtDiary : EditText
lateinit var btnWrite : Button
lateinit var fileName : String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)ㅏ
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
title = "간단 일기장"
dp = findViewById<DatePicker>(R.id.datePicker1)
edtDiary = findViewById<EditText>(R.id.edtDiary)
btnWrite = findViewById<Button>(R.id.btnWrite)
btnWrite.setOnClickListener {
var outFs = openFileOutput(fileName, Context.MODE_PRIVATE)
var str = edtDiary.text.toString()
outFs.write(str.toByteArray())
outFs.close()
Toast.makeText(applicationContext, fileName + "이 저장됨", Toast.LENGTH_SHORT).show()
}
var cal = Calendar.getInstance()
var yy = cal.get(Calendar.YEAR)
var mm = cal.get(Calendar.MONTH)
var dd = cal.get(Calendar.DATE)
dp.init(yy, mm, dd) { view, year, monthOfYear, dayOfMonth -> {
fileName = "" + year + "-" + monthOfYear + "_" + dayOfMonth + ".txt"
var str = readDiary(fileName)
edtDiary.setText(str)
btnWrite.isEnabled = true
}
}
}
fun readDiary(fName : String) : String? {
var diaryStr : String? = null
var inFs : FileInputStream
try {
inFs = openFileInput(fName)
var txt = ByteArray(500)
inFs.read(txt)
inFs.close()
diaryStr = txt.toString(Charsets.UTF_8).trim()
btnWrite.text = "수정하기"
} catch (e: Exception) {
edtDiary.hint = "일기 없음"
btnWrite.text = "새로 저장"
}
return diaryStr
}
}
저는!!!!! .kt 코드만 가져왔습니다!
activity_main.xml 은 매일 똑같아유..
우선, DatePicker, EditText, Button 같은 UI 요소를 선언하고 초기화했어요!
onCreate 메서드에서 레이아웃 파일을 연결한 후, DatePicker로 날짜를 선택할 때마다 해당 날짜에 맞는 파일 이름을 생성하고, 그 파일의 내용을 읽어와서 일기 입력란에 표시해 주도록 설정햇습니닷.
만약 파일이 존재하지 않는다면 "일기 없음"이라는 힌트를 보여 주고 버튼의 텍스트를 "새로 저장"으로 바꿔 주는 방식이에유~
파일 저장은 openFileOutput 메서드를 이용해서 파일을 열고, 일기 내용을 파일에 쓰는 구조로 되어 있어요!
버튼을 눌렀을 때 파일 이름에 해당하는 데이터를 저장하고, 저장이 완료되면 토스트 메시지로 "파일이 저장됨"을 알려 줍니닷.
마지막으로 readDiary라는 메서드에서 파일 이름을 받아 파일 내용을 읽어오도록 했으여
파일이 존재하면 내용을 불러오고, 없으면 일기 없다는 힌트를 보여 주면서 새로 저장할 수 있게 준비해 두는 식으로 짰습니당.
코틀린은 자꾸만 블로그가 줄어드는 이유는... 엽기 떠뽀끼 파티를 했었어요 데헷 >~<
'레쭈고 코틀린' 카테고리의 다른 글
Kotlin 10차시 (0) | 2024.11.10 |
---|---|
Kotlin 9차시 (1) | 2024.10.31 |
Kotlin 8차시 (3) | 2024.10.23 |
Kotlin 7차시 (3) | 2024.10.21 |
Kotlin 6차시 (3) | 2024.09.27 |