시간 값을 저장하고 검색하고 편집해야합니다. 이 작업을 어떻게 수행 할 수 SharedPreferences
있습니까?
답변
공유 환경 설정을 얻으려면 활동에서 다음 방법을 사용하십시오.
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
환경 설정을 읽으려면 :
String dateTimeKey = "com.example.app.datetime";
// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime());
환경 설정을 편집하고 저장하려면
Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();
android sdk의 샘플 디렉토리에는 공유 환경 설정을 검색하고 저장하는 예제가 포함되어 있습니다. 그것의 위치 :
<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory
편집 ==>
나는 여기 commit()
와 apply()
여기에 차이를 쓰는 것이 중요하다는 것을 알았습니다 .
commit()
true
값이 성공적으로 저장되면을 반환 합니다 false
. 값을 SharedPreferences에 동 기적으로 저장합니다 .
apply()
2.3에 추가되었으며 성공 또는 실패에 대한 값을 반환하지 않습니다. 값을 SharedPreferences에 즉시 저장하지만 비동기 커밋을 시작합니다 . 자세한 내용은 여기 입니다.
답변
공유 환경 설정에 값을 저장하려면 다음을 수행하십시오.
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name","Harneet");
editor.apply();
공유 환경 설정에서 값을 검색하려면 다음을 수행하십시오.
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
name = name + " Sethi"; /* Edit the value here*/
}
답변
에서 데이터 를 편집 하려면sharedpreference
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("text", mSaved.getText().toString());
editor.putInt("selection-start", mSaved.getSelectionStart());
editor.putInt("selection-end", mSaved.getSelectionEnd());
editor.apply();
에서 데이터 를 검색 하려면sharedpreference
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null)
{
//mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
/*if (selectionStart != -1 && selectionEnd != -1)
{
mSaved.setSelection(selectionStart, selectionEnd);
}*/
}
편집하다
API 데모 샘플에서이 스 니펫을 가져 왔습니다. EditText
거기 에 상자가 있었다. 이것 context
에는 필요하지 않습니다. 나는 같은 의견을 말하고 있습니다.
답변
쓰기 :
SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Authentication_Id",userid.getText().toString());
editor.putString("Authentication_Password",password.getText().toString());
editor.putString("Authentication_Status","true");
editor.apply();
읽다 :
SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
답변
가장 쉬운 방법:
저장하려면 :
getPreferences(MODE_PRIVATE).edit().putString("Name of variable",value).commit();
검색하려면
your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
답변
기본 설정의 값 설정 :
// MY_PREFS_NAME - a static String variable like:
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.commit();
환경 설정에서 데이터를 검색하십시오.
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
}
더 많은 정보:
답변
싱글 톤 공유 환경 설정 클래스. 앞으로 다른 사람들에게 도움이 될 수 있습니다.
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class SharedPref
{
private static SharedPreferences mSharedPref;
public static final String NAME = "NAME";
public static final String AGE = "AGE";
public static final String IS_SELECT = "IS_SELECT";
private SharedPref()
{
}
public static void init(Context context)
{
if(mSharedPref == null)
mSharedPref = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
}
public static String read(String key, String defValue) {
return mSharedPref.getString(key, defValue);
}
public static void write(String key, String value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putString(key, value);
prefsEditor.commit();
}
public static boolean read(String key, boolean defValue) {
return mSharedPref.getBoolean(key, defValue);
}
public static void write(String key, boolean value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putBoolean(key, value);
prefsEditor.commit();
}
public static Integer read(String key, int defValue) {
return mSharedPref.getInt(key, defValue);
}
public static void write(String key, Integer value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putInt(key, value).commit();
}
}
간단히 전화 SharedPref.init()
에 MainActivity
한 번
SharedPref.init(getApplicationContext());
데이터를 쓰려면
SharedPref.write(SharedPref.NAME, "XXXX");//save string in shared preference.
SharedPref.write(SharedPref.AGE, 25);//save int in shared preference.
SharedPref.write(SharedPref.IS_SELECT, true);//save boolean in shared preference.
데이터를 읽으려면
String name = SharedPref.read(SharedPref.NAME, null);//read string in shared preference.
int age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference.
boolean isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference.