平凡エンジニアからの出発

一に努力、二に理想、三に積小為大。

【AndroidTraining】SharedPreference 1

Lesson

SharedPreference 1

Mission

下記の仕様を満たすアプリを作りましょう。

  • ユーザーが入力した文字を保存し、画面に表示する

Snap Shot

◆確認手順

  1. 文字を入力(hello)
  2. Saveボタンを押下
  3. Displayボタンを押下
  4. 入力した文字が表示されること
  5. アプリを再起動する
  6. Displayボタンを押下
  7. 前回保存した文字が表示されること
f:id:atuyan39:20210408003557p:plainf:id:atuyan39:20210408003552p:plain

Step by Step

1 . 新しくActivity(TrainingSharedPreferenceActivity.java)を追加する
2 . xmlに、TextView, EditView, ButtonのViewを追加する
3 . Viewを取得する

        // Viewを取得
        TextView textView = findViewById(R.id.sp1_text_view);
        EditText editText = findViewById(R.id.sp1_edit_text);
        Button saveButton = findViewById(R.id.sp1_save_button);
        Button displayButton = findViewById(R.id.sp1_display_button);

4 . ボタンにクリックリスナーを設定する

        // Saveボタンクリック時の処理
        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveInputData(editText.getText().toString());
            }
        });

        // Displayボタンクリック時の処理
        displayButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText(getInputData());
            }
        });

5 . SharedPreferenceを操作する処理を実装する

    @NonNull
    private String getInputData() {
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        return sharedPreferences.getString(KEY_INPUT, "Nothing Input!");
    }

    private void saveInputData(@Nullable String text) {
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(KEY_INPUT, text);
        editor.apply();
    }

※おまけ(SharedPreferenceの変更通知を受け取り、トースト表示する)

        // SharedPreferenceの更新時にToastを表示する
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        sharedPreferences.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                Toast.makeText(getApplicationContext(), "update!", Toast.LENGTH_SHORT).show();
            }
        });

Code

SharedPreference 1 · atuyan39/AndroidTraining@c9b52bd · GitHub

Reference

SharedPreference

とても丁寧でわかりやすい記事。 qiita.com

Android Developer

SharedPreferences  |  Android Developers

Memo

Preferenceの情報が格納されている場所
/data/data/<アプリのパッケージ名>/shared_prefs