SharedPreferenceの使用方法 | Androidアプリ開発

SharedPreferenceは設定等をxmlに簡単に保存できる仕組みです。
この記事ではSharedPreferenceを用いたデータの保存方法・読み込み方法を説明しています。
スポンサーリンク

データの保存方法

以下が”id”というタグに”1″という値を保存するサンプルコードです。
各コードの説明はサンプルコード下部に記載します。
public class MainActivity extends Activity {
    final static String FILENAME = "Preference.xml";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences sp = this.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor e = sp.edit();
        e.putInt("id", 1);
        e.apply();
    }
}
SharedPreferencesのオブジェクト取得
SharedPreferences sp = this.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
ContextオブジェクトからgetSharedPrefrencesメソッドを使用してSharedPrefrencesのオブジェクトを取得します。

getSharedPreferencesの引数は以下の通りです。
  • 第1引数: 保存ファイル名です。
  • 第2引数: 保存モードです。MODE_PRIVATEを選択すると、xmlを作成したアプリからのみアクセス可能となります。通常はMODE_PRIVATEを選択すれば良いでしょう。他の候補はこちらを参照ください。
値の保存
SharedPreferences.Editor e = sp.edit();
e.putInt("id", 1);
e.apply();
まず、editメソッドでEditorオブジェクトを取得します。

次にputメソッドを用いて、値をEditorオブジェクトに収納します。
ここでは、int型の値を保存する例ですのでputIntメソッドを使用しています。
他のputメソッドにはputString, putBoolean, putLong, putFloatがあります。
putメソッドの第1引数はタグ名、第2引数は値です(int以外の変数型でも同様です)。

最後にapplyメソッドを使用してxmlに保存します。

保存可能な変数型 と 任意のオブジェクトを保存する方法

SharedPreferencesで保存可能な変数型は以下の5つです。
  1. String型
  2. boolean型
  3. int型
  4. long型
  5. float型
ただし、 GsonというGoogleが公開しているライブラリを使用することで、オブジェクトをJSON(文字列)へ変換できます。
そのJSONをputStringメソッドでSharedPreferenceに保存すれば、任意のオブジェクトを保存することが可能です。
詳しくは以下の記事にまとめています。

xmlの保存場所

SharedPreferencesで保存したxmlは以下の場所に保存されます。
data -> data -> パッケージ名 -> shared_prefs
スポンサーリンク

データの読み出し方法

以下がさきほど保存したタグ名”id”の値を読み出すサンプルコードです。
SharedPreferences sp = this.getSharedPreferences(FILENAME, Context.MODE_);
int value = sp.getInt("id", -1);
ここではint型の値を読み出すのでgetIntメソッドを使用しています。
他のgetメソッドにはgetString, getBoolean, getLong, getFloatがあります。
getIntメソッドの第1引数はタグ名、第2引数はタグがxmlに存在しないときに返す値です。
よって、このサンプルコードにおいて、もし”id”のタグがなかれば-1の値が返ります。
スポンサーリンク

オススメの使い方

私のオススメのSharedPreferencesの使用方法を紹介します。
まず、以下のようなSharedPreferences管理用のクラスを作成します。

SharedPreferencesManager.java
public class SharedPreferenceManager {
    final static String FILENAME = "Preference.xml";
    final static String Id = "id";

    SharedPreferences sp;

    SharedPreferenceManager(Context context) {
        sp = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
    }

    private void setValue(String tag, int value) {
        SharedPreferences.Editor e = sp.edit();
        e.putInt(tag, value);
        e.apply();
    }

    void setId(int value) { setValue(Id, value); }
    int getId() { return sp.getInt(Id, -1); }
}
次に以下の記事で紹介しているApplication継承クラスにこのSharedPreferencesManagerのオブジェクトを持たせます。 サンプルコードは以下です。

Common.java
public class Common extends Application {

    SharedPreferencesManager spm;

    @Override
    public void onCreate() {
        super.onCreate();

        spm = new SharedPreferencesManager(this);
    }
}
このようにしておくことで、プロジェクト全体で簡単にSharedPreferencesにアクセスできます。
以下がその場合のサンプルコードです。

MainActivity.java
public class MainActivity extends Activity {
    Common c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        c = (Common)getApplication();

        int value = c.spm.getId();
    }
}
スポンサーリンク

まとめ

この記事ではSharedPreferencesを用いたデータの保存方法・読出方法を紹介しました。
ローカルデータの保存方法には、他にSQLiteデータベースやStreamを用いた方法があります。
それぞれの方法のメリット・デメリットは以下の記事にまとめていますので、気になった方はご覧ください。
Androidアプリ開発
スポンサーリンク
Androidアプリ開発 記事一覧
Androidアプリ開発 記事一覧
Androidアプリ開発の記事一覧を以下にまとめています。
良かったらご覧ください。

Androidアプリ開発 記事一覧
カテゴリ広告: Androidアプリ開発
スポンサーリンク: Androidアプリ開発を個人レッスンで学ぶなら...?
Androidアプリ開発は一人で学んでいても限界があります。
そこでオススメなのがオンラインでAndroidアプリ開発を学べる「コードキャンプ」。
個人レッスンで丁寧に教えてくれます。

無料レッスン体験も可能なので、まずは無料体験から試してみてはいかがでしょうか?

Androidアプリ開発個人レッスン
一般広告: モバイルバッテリー
スポンサーリンク
Aresei-note
タイトルとURLをコピーしました