今日はデータの保存について。
Androidでは大きく分けて4つ。
- SharedPreferences
- ファイル(端末本体)
- SDカード
- SQLite(DB)
今日は上から二つ。SharedPreferencesとファイルをやりました。
プリミティブなデータのキーと値を保存して取得できる。
詳しい使い方はコチラ。
Using Shared Preferences
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import 色々; public class MainActivity extends Activity { SharedPreferences sharedPreferences; Button btn; EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sharedPreferences = getSharedPreferences("MyPref", Activity.MODE_PRIVATE); String saveStr = sharedPreferences.getString("SAVED_STR", ""); btn =(Button) findViewById(R.id.button1); et = (EditText) findViewById(R.id.editText1); et.setText(saveStr); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String inputStr = et.getText().toString(); Editor editor = sharedPreferences.edit(); editor.putString("SAVED_STR", inputStr); editor.commit(); } }); } } |
実行結果
パースペクティブ「DDMS」を開いて、該当端末のdata/data以下にあるパッケージ名のフォルダ内にxmlが生成されている。
端末本体へのファイル保存
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import 色々; public class MainActivity extends Activity { EditText et; Button btnIn; Button btnOut; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); addEvent(); } private void findView() { et = (EditText) findViewById(R.id.editText1); btnIn = (Button) findViewById(R.id.button1); btnOut = (Button) findViewById(R.id.button2); } private void addEvent() { // 読み込みボタン btnIn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { InputStream in = openFileInput("myfile.txt"); InputStreamReader isr = new InputStreamReader(in, "UTF-8"); BufferedReader br = new BufferedReader(isr); String lineStr; StringBuilder sb = new StringBuilder(); while ((lineStr = br.readLine()) != null) { sb.append(lineStr); } br.close(); et.setText(sb.toString()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); // 書き込みボタン btnOut.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { OutputStream out = openFileOutput("myfile.txt", MODE_PRIVATE); OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8"); PrintWriter pw = new PrintWriter(osw); String str = et.getText().toString(); pw.append(str); pw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }); } } |
今日はコードだけ・・・・
TechBoosterさんのお世話になります。
・・・っていうか今週は結構手抜きしそうな予感。
ホントに効率的にまとめる手段を構築するのが急務になってきたなコレ。
今が非効率なのだけは確か。困った困った。
コメント
No Trackbacks.