Пример общих настроек Android [закрыто]
Я хочу получить пользовательский ввод в приложение для последующего использования.
например, пользователю предлагается ввести все 7 дней недели и ввести в поле editText "понедельник", "вторник" и т. д. Затем позже в приложении появится вопрос и спросите, Какой ваш любимый день? И счетчик покажет выпадающий список дней, которые они ввели для пользователя, чтобы выбрать из.
Я думаю, что общие предпочтения будут работать для этого, но я не могу найти хороший пример, чтобы дать мне отправная точка. Любая помощь будет оценена по достоинству.
15 ответов:
установка значений в предпочтении:
// 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.apply();получить данные из предпочтения:
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. }подробнее:
Создать SharedPreferences
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); Editor editor = pref.edit();хранение данных в виде пары ключ / значение
editor.putBoolean("key_name1", true); // Saving boolean - true/false editor.putInt("key_name2", "int value"); // Saving integer editor.putFloat("key_name3", "float value"); // Saving float editor.putLong("key_name4", "long value"); // Saving long editor.putString("key_name5", "string value"); // Saving string // Save the changes in SharedPreferences editor.commit(); // commit changesполучить данные SharedPreferences
// если значение для ключа не существует, то верните второе значение param - в этом случае null
boolean userFirstLogin= pref.getBoolean("key_name1", true); // getting boolean int pageNumber=pref.getInt("key_name2", 0); // getting Integer float amount=pref.getFloat("key_name3", null); // getting Float long distance=pref.getLong("key_name4", null); // getting Long String email=pref.getString("key_name5", null); // getting Stringудаление значения ключа из SharedPreferences
editor.remove("key_name3"); // will delete key key_name3 editor.remove("key_name4"); // will delete key key_name4 // Save the changes in SharedPreferences editor.commit(); // commit changesочистить все данные из SharedPreferences
editor.clear(); editor.commit(); // commit changes
как Intialize?
// 0 - for private mode` SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); Editor editor = pref.edit();как хранить данные в общих предпочтениях?
editor.putString("key_name", "string value"); // Storing stringили
editor.putInt("key_name", "int value"); //Storing integerи не забудьте подать заявку:
editor.apply();как получить данные из общих предпочтений ?
pref.getString("key_name", null); // getting String pref.getInt("key_name", 0); // getting Integerнадеюсь, что это поможет U :)
Вы можете создать свой пользовательский класс SharedPreference
public class YourPreference { private static YourPreference yourPreference; private SharedPreferences sharedPreferences; public static YourPreference getInstance(Context context) { if (yourPreference == null) { yourPreference = new YourPreference(context); } return yourPreference; } private YourPreference(Context context) { sharedPreferences = context.getSharedPreferences("YourCustomNamedPreference",Context.MODE_PRIVATE); } public void saveData(String key,String value) { SharedPreferences.Editor prefsEditor = sharedPreferences.edit(); prefsEditor .putString(key, value); prefsEditor.commit(); } public String getData(String key) { if (sharedPreferences!= null) { return sharedPreferences.getString(key, ""); } return ""; } }вы можете получить экземпляр YourPrefrence, например:
YourPreference yourPrefrence = YourPreference.getInstance(context); yourPreference.saveData(YOUR_KEY,YOUR_VALUE); String value = yourPreference.getData(YOUR_KEY);
Shared Preferencesпредставляют собой XML-файлы, чтобы хранить личные примитивные данные в пар ключ-значение. Типы данных включают логические,терки,ints,тоска и строки.когда мы хотим сохранить некоторые данные, которые доступны в приложении, один из способов сделать это, чтобы сохранить его в глобальной переменной. Но он исчезнет, как только приложение будет закрыто. Еще один и рекомендуемый способ-сэкономить
SharedPreference. Данные, сохраненные в файле SharedPreferences, доступны во всем приложении и сохраняются даже после закрытия приложения или при перезагрузке.SharedPreferences сохраняет данные в паре ключ-значение и может быть доступен таким же образом.
вы можете создать объект
SharedPreferencesиспользуя два метода,1).getSharedPreferences() : С помощью этих методов можно создать несколько SharedPreferences.и его первые параметры во имя
SharedPreferences.2).getPreferences(): С помощью этого метода вы можете создать один
SharedPreferences.Хранение Данных
Добавить объявление переменной / создать файл предпочтений
public static final String PREFERENCES_FILE_NAME = "MyAppPreferences";получить дескриптор файла (с помощью getSharedPreferences)
SharedPreferences settingsfile= getSharedPreferences(PREFERENCES_FILE_NAME,0);открыть редактор и добавить ключ-значение пары
SharedPreferences.Editor myeditor = settingsfile.edit(); myeditor.putBoolean("IITAMIYO", true); myeditor.putFloat("VOLUME", 0.7) myeditor.putInt("BORDER", 2) myeditor.putLong("SIZE", 12345678910L) myeditor.putString("Name", "Amiyo") myeditor.apply();не забудьте применить/сохранить с помощью
myeditor.apply()как показано выше.Получение Данных
SharedPreferences mysettings= getSharedPreferences(PREFERENCES_FILE_NAME, 0); IITAMIYO = mysettings.getBoolean("IITAMIYO", false); //returns value for the given key. //second parameter gives the default value if no user preference found // (set to false in above case) VOLUME = mysettings.getFloat("VOLUME", 0.5) //0.5 being the default value if no volume preferences found // and similarly there are get methods for other data types
Я просто нашел все вышеперечисленные примеры слишком запутанными, поэтому я написал свой собственный. Фрагменты кода хороши, если вы знаете, что делаете, но как насчет таких людей, как я, которые этого не делают?
хотите вырезать-N-вставить решение вместо этого? Ну вот оно!
создайте новый java-файл и назовите его Keystore. Затем вставьте этот код:
import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.util.Log; public class Keystore { //Did you remember to vote up my example? private static Keystore store; private SharedPreferences SP; private static String filename="Keys"; private Keystore(Context context) { SP = context.getApplicationContext().getSharedPreferences(filename,0); } public static Keystore getInstance(Context context) { if (store == null) { Log.v("Keystore","NEW STORE"); store = new Keystore(context); } return store; } public void put(String key, String value) {//Log.v("Keystore","PUT "+key+" "+value); Editor editor = SP.edit(); editor.putString(key, value); editor.commit(); // Stop everything and do an immediate save! // editor.apply();//Keep going and save when you are not busy - Available only in APIs 9 and above. This is the preferred way of saving. } public String get(String key) {//Log.v("Keystore","GET from "+key); return SP.getString(key, null); } public int getInt(String key) {//Log.v("Keystore","GET INT from "+key); return SP.getInt(key, 0); } public void putInt(String key, int num) {//Log.v("Keystore","PUT INT "+key+" "+String.valueOf(num)); Editor editor = SP.edit(); editor.putInt(key, num); editor.commit(); } public void clear(){ // Delete all shared preferences Editor editor = SP.edit(); editor.clear(); editor.commit(); } public void remove(){ // Delete only the shared preference that you want Editor editor = SP.edit(); editor.remove(filename); editor.commit(); } }теперь сохраните этот файл и забудьте о нем. С этим покончено. Теперь вернитесь к своей деятельности и используйте ее как это:
public class YourClass extends Activity{ private Keystore store;//Holds our key pairs public YourSub(Context context){ store = Keystore.getInstance(context);//Creates or Gets our key pairs. You MUST have access to current context! int= store.getInt("key name to get int value"); string = store.get("key name to get string value"); store.putInt("key name to store int value",int_var); store.put("key name to store string value",string_var); } }
public class Preferences { public static final String PREF_NAME = "your preferences name"; @SuppressWarnings("deprecation") public static final int MODE = Context.MODE_WORLD_WRITEABLE; public static final String USER_ID = "USER_ID_NEW"; public static final String USER_NAME = "USER_NAME"; public static final String NAME = "NAME"; public static final String EMAIL = "EMAIL"; public static final String PHONE = "PHONE"; public static final String address = "address"; public static void writeBoolean(Context context, String key, boolean value) { getEditor(context).putBoolean(key, value).commit(); } public static boolean readBoolean(Context context, String key, boolean defValue) { return getPreferences(context).getBoolean(key, defValue); } public static void writeInteger(Context context, String key, int value) { getEditor(context).putInt(key, value).commit(); } public static int readInteger(Context context, String key, int defValue) { return getPreferences(context).getInt(key, defValue); } public static void writeString(Context context, String key, String value) { getEditor(context).putString(key, value).commit(); } public static String readString(Context context, String key, String defValue) { return getPreferences(context).getString(key, defValue); } public static void writeFloat(Context context, String key, float value) { getEditor(context).putFloat(key, value).commit(); } public static float readFloat(Context context, String key, float defValue) { return getPreferences(context).getFloat(key, defValue); } public static void writeLong(Context context, String key, long value) { getEditor(context).putLong(key, value).commit(); } public static long readLong(Context context, String key, long defValue) { return getPreferences(context).getLong(key, defValue); } public static SharedPreferences getPreferences(Context context) { return context.getSharedPreferences(PREF_NAME, MODE); } public static Editor getEditor(Context context) { return getPreferences(context).edit(); } }****используйте настройки для записи значения с помощью: -****
Preferences.writeString(getApplicationContext(), Preferences.NAME, "dev");****используйте настройки для чтения значения с помощью: -****
Preferences.readString(getApplicationContext(), Preferences.NAME, "");
SharedPreferences mPref; SharedPreferences.Editor editor; public SharedPrefrences(Context mContext) { mPref = mContext.getSharedPreferences(Constant.SharedPreferences, Context.MODE_PRIVATE); editor=mPref.edit(); } public void setLocation(String latitude, String longitude) { SharedPreferences.Editor editor = mPref.edit(); editor.putString("latitude", latitude); editor.putString("longitude", longitude); editor.apply(); } public String getLatitude() { return mPref.getString("latitude", ""); } public String getLongitude() { return mPref.getString("longitude", ""); } public void setGCM(String gcm_id, String device_id) { editor.putString("gcm_id", gcm_id); editor.putString("device_id", device_id); editor.apply(); } public String getGCMId() { return mPref.getString("gcm_id", ""); } public String getDeviceId() { return mPref.getString("device_id", ""); } public void setUserData(User user){ Gson gson = new Gson(); String json = gson.toJson(user); editor.putString("user", json); editor.apply(); } public User getUserData(){ Gson gson = new Gson(); String json = mPref.getString("user", ""); User user = gson.fromJson(json, User.class); return user; } public void setSocialMediaStatus(SocialMedialStatus status){ Gson gson = new Gson(); String json = gson.toJson(status); editor.putString("status", json); editor.apply(); } public SocialMedialStatus getSocialMediaStatus(){ Gson gson = new Gson(); String json = mPref.getString("status", ""); SocialMedialStatus status = gson.fromJson(json, SocialMedialStatus.class); return status; }
лучший способ создать
SharedPreferenceи для глобального использования нужно создать класс, как показано ниже:public class PreferenceHelperDemo { private final SharedPreferences mPrefs; public PreferenceHelperDemo(Context context) { mPrefs = PreferenceManager.getDefaultSharedPreferences(context); } private String PREF_Key= "Key"; public String getKey() { String str = mPrefs.getString(PREF_Key, ""); return str; } public void setKey(String pREF_Key) { Editor mEditor = mPrefs.edit(); mEditor.putString(PREF_Key, pREF_Key); mEditor.commit(); } }
запись в Общие настройки
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score), newHighScore); editor.commit();читать из общих предпочтений
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.string.saved_high_score_default); long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
Initialise here.. SharedPreferences msharedpref = getSharedPreferences("msh", MODE_PRIVATE); Editor editor = msharedpref.edit(); store data... editor.putString("id",uida); //uida is your string to be stored editor.commit(); finish(); fetch... SharedPreferences prefs = this.getSharedPreferences("msh", Context.MODE_PRIVATE); uida = prefs.getString("id", "");
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score), newHighScore); editor.commit();
вы также можете взглянуть на прошлое пример проекта мой, написанный для этой цели. Я сохраняю локально имя и извлекает его либо по запросу пользователя, либо при запуске приложения.
но, в это время, было бы лучше использовать
commit(вместоapply) для сохранения данных. Подробнее здесь.
// Create object of SharedPreferences. SharedPreferences sharedPref = getSharedPreferences("mypref", 0); //now get Editor SharedPreferences.Editor editor = sharedPref.edit(); //put your value editor.putString("name", required_Text); //commits your edits editor.commit(); // Its used to retrieve data SharedPreferences sharedPref = getSharedPreferences("mypref", 0); String name = sharedPref.getString("name", ""); if (name.equalsIgnoreCase("required_Text")) { Log.v("Matched","Required Text Matched"); } else { Log.v("Not Matched","Required Text Not Matched"); }
общие предпочтения так легко узнать, так что взгляните на это простой учебник о sharedpreference
import android.os.Bundle; import android.preference.PreferenceActivity; public class UserSettingActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); } }
Comments