Androidにおけるデータアクセス-方式1:preference(構成)


この方法は、最も簡単なAndroidで外部データを読み書きする方法であるはずです.彼の使い方は基本的にJ 2 SE(java.util.prefs.Preferences)の使い方と同じで、ユーザーがカスタマイズしたフォント、色、位置などのパラメータ情報を簡単で透明な方法で保存します.一般的なアプリケーションでは、「設定」や「プリファレンス」というインタフェースが提供されています.これらの設定は最後にPreferencesで保存できますが、プログラマーはどのような形式で保存されているのか、どこに保存されているのかを知る必要はありません.もちろん、他のものを保存したいなら、制限はありません.ただ、性能的には何が問題なのか分かりません.
Androidシステムでは、これらの情報はXMLファイルとして/data/data/PCMAGE_に保存されています.NAME/shared_prefsディレクトリの下.
データ読み込み
 

  
  
  
  
  1. 1.  
  2. String PREFS_NAME = "Note.sample.roiding.com";     
  3.  
  4. 2.  
  5. SharedPreferences settings = getSharedPreferences(PREFS_NAME,  0);     
  6.  
  7. 3.  
  8.  boolean silent = settings.getBoolean("silentMode", false);     
  9.  
  10. 4.  
  11. String hello = settings.getString( "hello", "Hi");    

String PREFS_NAME = "Note.sample.roiding.com";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
String hello = settings.getString("hello", "Hi");
  • SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 名称を通じて、SharedPreferencesを得て、その名の通り、このPreferencesは共有して、共有の範囲は今同じPackageの中で、この中で言うPackageはJavaの中のあのPackageとは違って、この中のPackageはAndroidManifestを指すようです.xmlファイル:
     
    xmlns:android
    =
    "http://schemas.android.com/apk/res/android"

  • package
    =
    "com.roiding.sample.note"

  • android:versionCode
    =
    "1"

  • android:versionName
    =
    "1.0.0"
    >
  • 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.roiding.sample.note"
    android:versionCode="1"
    android:versionName="1.0.0">
    
    この中のpackage.私の現在の実験結果から見ると、そうです.ご指摘を歓迎します.あとのintは読み書きモードを宣言するために使われていますが、それ以上はともかく、しばらくは0(android.context.MODE_PRIVATE)にすればいいことがわかります.
  • boolean silent = settings.getBoolean(”silentMode”, false); boolean値を取得すると、ここではPreferencesを使用するメリットが表示されます.デフォルト値を指定できます.つまり、Preferenceにこの値が存在しない場合は、後の値を戻り指として、ifが何であるかの判断を省くことができます.

  • データの書き込み
     
    String PREFS_NAME =
    "Note.sample.roiding.com"
    ;

  • SharedPreferences settings = getSharedPreferences(PREFS_NAME,
    0
    );

  • SharedPreferences.Editor editor = settings.edit();

  • editor.putBoolean(
    "silentMode"
    ,
    true
    );

  • editor.putString(
    "hello"
    ,
    "Hello~"
    );

  • editor.commit();
  • 
    String PREFS_NAME = "Note.sample.roiding.com";
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("silentMode", true);
    editor.putString("hello", "Hello~");
    editor.commit();
    

    上のデータが読み取ったコードがあれば、この中のコードは分かりやすくなりますが、最後のcommit()を忘れないでください.
     
     
    例:
    /Chapter09_Data_01/src/com/amaker/test/MainActivity.java
     
    
      
      
      
      
    1.  
    2.  
    3. package com.amaker.test;  
    4.  
    5. import android.app.Activity;  
    6. import android.content.SharedPreferences;  
    7. import android.os.Bundle;  
    8. import android.widget.Button;  
    9. import android.widget.EditText;  
    10.  
    11. public class MainActivity extends Activity {  
    12.     private EditText myEditText;  
    13.     private Button b1;  
    14.     private static final String TEMP_SMS="temp_sms";  
    15.     @Override  
    16.     public void onCreate(Bundle savedInstanceState) {  
    17.         super.onCreate(savedInstanceState);  
    18.         setContentView(R.layout.main);  
    19.           
    20.         myEditText = (EditText)findViewById(R.id.EditText01);  
    21.         b1 = (Button)findViewById(R.id.Button01);  
    22.           
    23.         SharedPreferences pre = getSharedPreferences(TEMP_SMS, MODE_WORLD_READABLE);  
    24.         String content = pre.getString("sms_content", "");  
    25.         myEditText.setText(content);  
    26.           
    27.     }  
    28.       
    29.     @Override  
    30.     protected void onStop() {  
    31.         super.onStop();  
    32.         SharedPreferences.Editor editor = getSharedPreferences(TEMP_SMS, MODE_WORLD_WRITEABLE).edit();  
    33.         editor.putString("sms_content", myEditText.getText().toString());  
    34.         editor.commit();  
    35.     }  

    /Chapter09_Data_01/res/layout/main.xml
     
    
      
      
      
      
    1.  
    2.  
    3. <?xml version="1.0" encoding="utf-8"?> 
    4. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    5.     android:orientation="vertical" 
    6.     android:layout_width="fill_parent" 
    7.     android:layout_height="fill_parent" 
    8.     > 
    9. <TextView    
    10.     android:layout_width="fill_parent"   
    11.     android:layout_height="wrap_content" android:text="Preference Test"/> 
    12. <EditText   
    13. android:text=""   
    14. android:id="@+id/EditText01"   
    15. android:layout_width="fill_parent"   
    16. android:layout_height="wrap_content" 
    17. android:height="180px" 
    18. ></EditText> 
    19. <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send"></Button> 
    20. </LinearLayout> 

    /Chapter09_Data_01/AndroidManifest.xml
     
    
      
      
      
      
    1.  
    2.  
    3. <?xml version="1.0" encoding="utf-8"?> 
    4. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    5.       package="com.amaker.test" 
    6.       android:versionCode="1" 
    7.       android:versionName="1.0"> 
    8.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    9.         <activity android:name=".MainActivity" 
    10.                   android:label="@string/app_name"> 
    11.             <intent-filter> 
    12.                 <action android:name="android.intent.action.MAIN" /> 
    13.                 <category android:name="android.intent.category.LAUNCHER" /> 
    14.             </intent-filter> 
    15.         </activity> 
    16.  
    17.     </application> 
    18.     <uses-sdk android:minSdkVersion="3" /> 
    19.  
    20. </manifest>