簡単な手続きでデータを保存できるSharedPreferencesを使ってみよう。
主にアプリの設定の保存に使われるが、Key,Valueで管理できる簡単なデータだったらこれを使ってOK。
Q1
SharedPreferencesを使ってデータの保存と復元を行ってみよう。
[実行例]
1.スタート画面
テキスト入力画面の下にボタンが二つ並んでいる。
2.インストール後初回起動時は確認ボタンを押すとデータが保存されていないため、「未登録」と表示される。
3.エディットテキストに文字を入力する
4.登録ボタンを押すとSharedPreferencesに登録され、トーストにて「登録しまたした。」と出力さえれる。(EditTextの文字は消える)
5.確認ボタンを押すと、登録された言葉が表示される。
6.再び入力し登録した場合には上書きされる(今回保存されるデータは一つ)
●activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="memo" /> <EditText android:id="@+id/et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:ems="10" android:inputType="textPersonName" app:layout_constraintLeft_toRightOf="@+id/textView" app:layout_constraintRight_toRightOf="parent" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" /> <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:elevation="0dp" android:onClick="btRegister" android:text="登録" app:layout_constraintHorizontal_weight="1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/button2" app:layout_constraintTop_toBottomOf="@+id/et" /> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:onClick="btConfirm" android:text="確認" app:layout_constraintHorizontal_weight="1" app:layout_constraintLeft_toRightOf="@+id/button" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/et" /> </android.support.constraint.ConstraintLayout>
●MainActivity.java
import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { SharedPreferences pref; EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //SharedPreferencesの取得方法は色々あるが一番簡単のはこれ //モードは他にもあるが現在非推奨のため、これ一択でよい。 pref=this.getPreferences(MODE_PRIVATE); //EditTextをfindView et=(EditText)findViewById(R.id.et); } //登録ボタン public void btRegister(View v){ String word=et.getText().toString(); //書き込みの際にはEditorインスタンスを生成する SharedPreferences.Editor editor=pref.edit(); //putXxxxx("キー",value) //putの後は型(String,Boolean,Double,Intなど) editor.putString("word",word); //commitで書き込まれる editor.commit(); et.setText(""); Toast.makeText(this,"登録しました。",Toast.LENGTH_LONG).show(); } //確認ボタン public void btConfirm(View v){ //取得はgetXxxxx("キー",未登録の場合の初期値); String word=pref.getString("word","未登録"); et.setText(word); } }
コメント