設定データの保存/読み出し
SharedPreferencesを使う。
おなじみのキーバリューストア方式である。
// 保存 SharedPreferences pref = getSharedPreferences("Hoge",MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("Key1", "Piyo"); editor.putInt("Key2", 123); editor.commit(); // commit()だとファイルIOが同期待ち。apply()だと非同期。 // メソッドチェーンして1行で書いてもよい pref.edit().putString("Key1", "Piyo").commit();
// 読み出し SharedPreferences pref = getSharedPreferences("Hoge",MODE_PRIVATE); // 第2引数は何も入っていないときの初期値 String piyo = pref.getString("Key1", "Foo"); int fuga = pref.getInt("Key2", 456 );
画面遷移時に引数を渡す
Intentにキーバリューストア方式で種々のデータを持たせる。
// 呼び出し元 Intent intent = new Intent(getApplication(), HogeActivity.class); intent.putExtra(“Key1”, "Piyo"); intent.putExtra(“Key2”, 123); startActivity(intent);
// 呼び出し先 Intent intent = getIntent(); String Piyo = intent.getStringExtra(“Key1”); int fuga = intent.getIntExtra(“Key2”, 456);
元画面に戻るときに戻り値を返す
startActivityのかわりにstartActivityForResultを使う。
第2引数の要求コードは任意の定数を与える。
private static final int REQUEST_CODE = 1; // 任意の定数 Intent intent = new Intent(getApplication(), HogeActivity.class); startActivityForResult(intent, REQUEST_CODE);
呼び出し先Activity で Intentに種々のデータを持たせる。
setResultで結果コード(OKかキャンセルかなど)とIntentを設定して、finishする。
Intent intent = new Intent(); intent.putExtra("Key1", "Piyo"); setResult(RESULT_OK, intent); finish();
呼び出し元Activity で onActivityResult が呼ばれる。
第1引数の要求コードで、どの呼び出しからの戻り値か判別できる。
第2引数の結果コードで、OKかキャンセルかなどが判別できる。
第3引数のIntentから種々のデータを取り出せる。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ // 要求コードごとの処理 switch(requestCode){ case(REQUEST_CODE): // 結果コードごとの処理 if(resultCode == RESULT_OK){ String piyo = data.getStringExtra("Key1"); }else if(resultCode == RESULT_CANCELED){ ; }else{ ; } break; default: break; } }