AndroidStudio(kotlin) 텍스트 문자열을 내부 스토리지에 저장 및 읽기

11277 단어 AndroidStudioKotlin

하고 싶은 일


  • "저장"버튼과 "읽기"버튼을 설치한다.
  • 텍스트 입력 양식을 설치합니다.
  • 입력 양식에서 문자를 입력하고 "저장"을 누르면 앱의 내부 저장소에 문자가 저장됩니다.
  • "읽기"버튼을 누르면 내부 스토리지에 저장된 문자열을 읽고 뷰에 표시합니다.

  • 화면



    녹색 영역에 문자열을 입력하고 "저장"을 누른 다음 "읽기"를 누르면 분홍색 영역에 문자열이 표시됩니다.


    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <Button
            android:id="@+id/saveBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="32dp"
            android:layout_marginLeft="32dp"
            android:layout_marginEnd="32dp"
            android:layout_marginRight="32dp"
            android:layout_marginBottom="32dp"
            android:text="保存する"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/readBtn"
            app:layout_constraintHorizontal_bias="0.029"
            app:layout_constraintStart_toStartOf="parent" />
    
        <Button
            android:id="@+id/readBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="32dp"
            android:layout_marginRight="32dp"
            android:layout_marginBottom="32dp"
            android:text="読み出す"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />
    
        <EditText
            android:id="@+id/inputContents"
            android:layout_width="339dp"
            android:layout_height="109dp"
            android:layout_marginTop="32dp"
            android:background="#D6ECC7"
            android:ems="10"
            android:gravity="start|top"
            android:inputType="textMultiLine"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <TextView
            android:id="@+id/displayContents"
            android:layout_width="338dp"
            android:layout_height="298dp"
            android:background="#46F235F8"
            android:text="ここに表示される。"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/inputContents" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    메인 처리


    
    package com.example.yamato200610c
    
    import android.content.Context
    import android.os.Bundle
    import android.view.View
    import androidx.appcompat.app.AppCompatActivity
    import kotlinx.android.synthetic.main.activity_main.*
    import java.io.BufferedReader
    import java.io.File
    
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val fileName = "contents.txt"
    
            // 保存ボタン押下時の挙動。
            saveBtn.setOnClickListener(View.OnClickListener {
                val contents = inputContents.text
                saveFile(fileName, contents.toString())
            })
    
            // 読み出すボタン押下時の挙動。
            readBtn.setOnClickListener(View.OnClickListener {
                val buf: BufferedReader = readFile(fileName)
                val result = buf.use{it.readText()}
                displayContents.text = result
            })
        }
    
        // 保存処理。
        private fun saveFile(file: String, str: String) {
            applicationContext.openFileOutput(file, Context.MODE_PRIVATE).use {
                it.write(str.toByteArray())
            }
        }
    
        // 読み出し処理。
        private fun readFile(file: String): BufferedReader {
            val readFile = File(applicationContext.filesDir, file)
            return readFile.bufferedReader()
        }
    }
    

    좋은 웹페이지 즐겨찾기