共有環境設定(SharedPreferences)を利用したデータの保存方法【Androidアプリ開発】

共有環境設定(SharedPreferences)を利用したデータの保存方法を説明しています。この設定方法はアプリ内のみで管理する場合に利用します。
※Key-Valueでのデータ管理となるため、複雑な制御や大量のデータ管理には向いていません。

レイアウト

以下のような画面を作成します。

レイアウト

処理概要

必要な処理を順番に説明していきます。

// 共有環境設定インスタンスの作成
val sharedPreference: SharedPreferences = getSharedPreferences("sharedPreference", MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()

共有環境設定の読み書きをするための準備です。実際には以下のようなxmlファイルに保存されているため、xmlファイルを読み込むような動作となっています。

共有環境設定xml
//共有環境設定へ値をセット
editor.putString("key", "test1")
//editor.commit()
editor.apply()

putStringで値をセットして、commit,applyでデータを書き込みます。
※putStringは文字列を設定するための関数です。型ごとにputメソッドが用意されていますので、適宜使い分けていきましょう。

putStringの引数は以下のようになっていて、これが先ほどのxmlファイルへ書き込まれます。

  • 第一引数:キー値
  • 第二引数:設定する値

commitとapplyには以下のような違いがあります。即時で書き込みが必要である場合はcommit、そうでなければapplyを利用すると良いでしょう。

  • commit
    →同期
  • apply
    →非同期
//共有環境設定から値を読み込む
val str: String? = sharedPreference.getString("key", "No Data")

getStringで値を取得します。
※getStringは文字列を取得するための関数です。型ごとにgetメソッドが用意されていますので、適宜使い分けていきましょう。

  • 第一引数:キー値
  • 第二引数:デフォルト値

となっていて、値が存在しない場合はデフォルト値が取得されます。

実装方法

上で説明した内容を踏まえて、以下のような処理を実装していきます。

  • 各ボタンを押したとき
    →共有環境設定に値を書き込み、テキストに設定します。
  • アプリを起動したとき
    →共有環境設定から値を読み込み、テキストに設定します。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 共有環境設定インスタンスの作成
    val sharedPreference: SharedPreferences = getSharedPreferences("sharedPreference", MODE_PRIVATE)
    val editor: SharedPreferences.Editor = sharedPreference.edit()

    //コンポーネントの取得
    val textView: TextView = findViewById(R.id.TextView)
    val button: Button = findViewById(R.id.button)
    val button2: Button = findViewById(R.id.button2)

    //共有環境設定から値を読み込む
    val str: String? = sharedPreference.getString("key", "No Data")
    textView.text = str

    //1つ目のボタンを押したとき、共有環境設定への書き込みと表示更新を行う
    button.setOnClickListener{
        textView.text = "test1"
        editor.putString("key", "test1")
        //editor.commit()
        editor.apply()
    }

    //2つ目のボタンを押したとき、共有環境設定への書き込みと表示更新を行う
    button2.setOnClickListener{
        textView.text = "test2"
        editor.putString("key", "test2")
        //editor.commit()
        editor.apply()
    }
}

実行結果

アプリの動作はこのようになりました。

  1. 初期起動時
    →”No Data”と表示される(デフォルト値)
  2. 1つ目のボタンを押したとき
    →”test1″と表示される
  3. 2つ目のボタンを押したとき
    →”test2″と表示される
  4. アプリ終了後にもう一度起動したとき
    →”test2″と表示される(共有環境設定に”test2″と保存されているため)
  5. 端末を再起動後にアプリを起動したとき
    →”test2″と表示される(共有環境設定に”test2″と保存されているため)

xmlファイルとして保存されているため、アプリを終了しても値は保持されます。
そのため、初期化が必要な場合は明示的に記述する必要があります。

まとめ

共有環境設定(SharedPreferences)を利用したデータの保存方法を説明しました。

  • 共有環境設定(SharedPreferences)を利用すると、アプリ内でのデータ管理が可能となります。
    ただし、Key-Valueでのデータ管理となるため、複雑な制御や大量のデータ管理には向いていません。
  • xmlファイルに保存されるため、アプリを終了しても値は保持されます。
    ただし、初期化が必要な場合は明示的に記述する必要があります。

参考

Key-Value データを保存する|Android Developers

学習方法

Javaの基礎を学ぶ

Androidアプリ開発では、JavaやKotlinが用いられます。
いきなりAndroidアプリ開発を学習するのは難しいので、Javaの基礎から学習しておくと理解しやすくなります。

既に、Javaの学習経験・開発経験がある方は必要ありませんが、Java言語を使ったことがないという方は、Javaの基礎から学習することをオススメします。

また、Kotlinに関しては、Javaを簡略したような書き方となっています。Javaの基礎知識がないと学習が難しいですが、Javaの基礎知識があれば、ご自身で調べながら学習することも十分に可能です。

 

独学が難しいと思ったら…

プログラミングスクールを活用してみても良いでしょう。
通常のプログラミングスクールは、数十万円の費用が掛かる場合があり、中々手が出しづらいですが、サブスク型のプログラミングスクールも存在しています。
サブスク型と言っても、通常のプログラミングスクールと同じように、現役エンジニアによるサポートも付いています。
最も安い基本的なコースで、月額1万円ほどとなっており、他のプログラミングスクールよりも初期費用が安いため、気軽に始められます。

Androidアプリ開発を学ぶ

Javaの基礎知識があったとしても、Androidアプリ独特の仕組みがあるため、とっつきづらいです。

Javaでの開発経験があれば、問題を解決しながら学習することも可能です。しかし、(当サイト含め)ネットでの情報は断片的に解説されていることも多く、流れで理解するのは難しいかしれません。

ご自身で調べながら学習することが難しいと感じたら、市販の参考書を活用すると良いでしょう。参考書では、Androidアプリ開発というテーマに沿って、1冊内で解説していく流れとなっていますので、入門書として活用すると理解がしやすくなります。

Kotlin版

Java版

 

Androidアプリ開発
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました