天天看點

Android 存取資料之SharedPreferences

Android 程式簡單資料的存取。

public class MainActivity extends Activity {

  /********************************************
   * 當有少量應用程式資料需要儲存的時候就可以用SharedPreferences來進行儲存。 SharedPreferences
   * 适用于儲存類似于配置資訊格式的資料。主要是簡單的鍵值類型的key-valued對。
   * 
   * 本示例展示了利用SharedPreferencs來進行存取資料。 使用步驟:
   * 
   * 1.擷取SharedPreferences對象 getSharedPreferences("MyData",
   * MODE_WORLD_READABLE);
   * 
   * 2.擷取SharedPreference.Edit 對象 editor = sharedPreferences.edit();
   * 
   * 3.輸入資料 字元串: editor.putString("time", sdf.format(new Date())); 整數:
   * editor.putInt("random", (int) (Math.random()*100));
   * 
   * 4.送出資料 editor.commit();
   * 
   * 5.讀取資料 String timeString = sharedPreferences.getString("time", null); int
   * randNum = sharedPreferences.getInt("random", 0);
   * 
   * 注意:SharedPreference儲存的檔案位于/data/data/包名/shared_prefs下。
   ********************************************/

  SharedPreferences sharedPreferences;
  SharedPreferences.Editor editor;

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

    Button readButton = (Button) findViewById(R.id.readButton);
    Button writeButton = (Button) findViewById(R.id.writeButton);

    // 擷取隻能被程式讀寫的SharedPreferences對象 如果不存在将被建立,這裡設定為可以被其他程式讀
    sharedPreferences = getSharedPreferences("MyData", MODE_WORLD_READABLE);
    editor = sharedPreferences.edit();

    writeButton.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 "
            + "hh:mm:ss");
        // 存入目前時間
        editor.putString("time", sdf.format(new Date()));
        editor.putInt("random", (int) (Math.random() * 100));
        editor.commit();
      }
    });

    readButton.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        String timeString = sharedPreferences.getString("time", null);
        int randNum = sharedPreferences.getInt("random", 0);
        Toast.makeText(MainActivity.this,
            "time: " + timeString + "\nrandNum: " + randNum,
            Toast.LENGTH_SHORT).show();
      }
    });
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

}