Intereting Posts
Внедрение схемы аутентификации для мобильных приложений с использованием Tastypie Создать QR-код для приложения на рынке Выпадающее меню или просмотр на слайде Android: последняя строка текста отключена Unicode-символ на Android не отображается Отключить прокрутку моментов в Chrome для Android Форматирование JSON Body для дооснащения из однострочного значения без модели Как добавить два атрибута android: name в тег приложения в файле манифеста? ListView накладывает другой макет при прокрутке Отображение номера контакта и имени контакта в пользовательском списке SetURLStreamHandlerFactory и "java.lang.Error: Factory уже установлен" Android: Заставка не отображается, почему? AdWhirl не показывает объявления AdMob Анимированное уменьшение размера кнопки при нажатии и восстановление его размера при выпуске Метод get () AsyncTask: есть ли какой-нибудь сценарий, где это действительно лучший вариант?

Как использовать SharedPreferences в Android для хранения, извлечения и редактирования значений

Я хочу сохранить значение времени и его нужно восстановить и отредактировать. Как я могу использовать 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(); 

Чтобы получить данные из общих предпочтений

 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 Demo. У меня там есть текстовое поле редактирования … В этом контексте это не требуется. Я комментирую то же самое

Написать :

 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. } 

больше информации:

Использование общих настроек

Общие настройки

Для хранения информации

  SharedPreferences preferences = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("username", username.getText().toString()); editor.putString("password", password.getText().toString()); editor.putString("logged", "logged"); editor.commit(); 

Чтобы сбросить настройки

  SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit(); 

Если вы делаете большое приложение с другими разработчиками в своей команде и собираетесь иметь все хорошо организованное без разбросанного кода или разных экземпляров SharedPreferences, вы можете сделать что-то вроде этого:

 //SharedPreferences manager class public class SharedPrefs { //SharedPreferences file name private static String SHARED_PREFS_FILE_NAME = "my_app_shared_prefs"; //here you can centralize all your shared prefs keys public static String KEY_MY_SHARED_BOOLEAN = "my_shared_boolean"; public static String KEY_MY_SHARED_FOO = "my_shared_foo"; //get the SharedPreferences object instance //create SharedPreferences file if not present private static SharedPreferences getPrefs(Context context) { return context.getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE); } //Save Booleans public static void savePref(Context context, String key, boolean value) { getPrefs(context).edit().putBoolean(key, value).commit(); } //Get Booleans public static boolean getBoolean(Context context, String key) { return getPrefs(context).getBoolean(key, false); } //Get Booleans if not found return a predefined default value public static boolean getBoolean(Context context, String key, boolean defaultValue) { return getPrefs(context).getBoolean(key, defaultValue); } //Strings public static void save(Context context, String key, String value) { getPrefs(context).edit().putString(key, value).commit(); } public static String getString(Context context, String key) { return getPrefs(context).getString(key, ""); } public static String getString(Context context, String key, String defaultValue) { return getPrefs(context).getString(key, defaultValue); } //Integers public static void save(Context context, String key, int value) { getPrefs(context).edit().putInt(key, value).commit(); } public static int getInt(Context context, String key) { return getPrefs(context).getInt(key, 0); } public static int getInt(Context context, String key, int defaultValue) { return getPrefs(context).getInt(key, defaultValue); } //Floats public static void save(Context context, String key, float value) { getPrefs(context).edit().putFloat(key, value).commit(); } public static float getFloat(Context context, String key) { return getPrefs(context).getFloat(key, 0); } public static float getFloat(Context context, String key, float defaultValue) { return getPrefs(context).getFloat(key, defaultValue); } //Longs public static void save(Context context, String key, long value) { getPrefs(context).edit().putLong(key, value).commit(); } public static long getLong(Context context, String key) { return getPrefs(context).getLong(key, 0); } public static long getLong(Context context, String key, long defaultValue) { return getPrefs(context).getLong(key, defaultValue); } //StringSets public static void save(Context context, String key, Set<String> value) { getPrefs(context).edit().putStringSet(key, value).commit(); } public static Set<String> getStringSet(Context context, String key) { return getPrefs(context).getStringSet(key, null); } public static Set<String> getStringSet(Context context, String key, Set<String> defaultValue) { return getPrefs(context).getStringSet(key, defaultValue); } } 

В своей деятельности вы можете сохранить SharedPreferences таким образом

 //saving a boolean into prefs SharedPrefs.savePref(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN, booleanVar); 

И вы можете получить свои SharedPreferences таким образом

 //getting a boolean from prefs booleanVar = SharedPrefs.getBoolean(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN); 

В любом приложении есть настройки по умолчанию, которые можно получить через экземпляр PreferenceManager и связанный с ним метод getDefaultSharedPreferences (Context)

С экземпляром SharedPreference можно получить значение int любого значения с помощью getInt (String key, int defVal) . Предпочтение, которое нас интересует в этом случае, является встречным

В нашем случае мы можем модифицировать экземпляр SharedPreference в нашем случае с помощью edit () и использовать putInt (String key, int newVal). Мы увеличили количество для нашего приложения, которое выступает за приложение и отображается соответствующим образом.

Чтобы продолжить демонстрацию этого, перезапустите и приложение снова, вы заметите, что счет будет увеличиваться при каждом перезапуске приложения.

PreferencesDemo.java

Код:

 package org.example.preferences; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.widget.TextView; public class PreferencesDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Get the app's shared preferences SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this); // Get the value for the run counter int counter = app_preferences.getInt("counter", 0); // Update the TextView TextView text = (TextView) findViewById(R.id.text); text.setText("This app has been started " + counter + " times."); // Increment the counter SharedPreferences.Editor editor = app_preferences.edit(); editor.putInt("counter", ++counter); editor.commit(); // Very important } } 

main.xml

Код:

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> 

Singleton Shared Preferences Class. Это может помочь другим в будущем.

  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. String age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference. String isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference. 

Простое решение, как сохранить значение входа в SharedPreferences .

Вы можете расширить класс MainActivity или другой класс, где вы сохраните «ценность того, что хотите сохранить». Поместите это в классы писателя и читателя:

 public static final String GAME_PREFERENCES_LOGIN = "Login"; 

Здесь InputClass а OutputClass – класс вывода, соответственно.

 // This is a storage, put this in a class which you can extend or in both classes: //(input and output) public static final String GAME_PREFERENCES_LOGIN = "Login"; // String from the text input (can be from anywhere) String login = inputLogin.getText().toString(); // then to add a value in InputCalss "SAVE", SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0); Editor editor = example.edit(); editor.putString("value", login); editor.commit(); 

Теперь вы можете использовать его в другом месте, как и в других классах. Следующим является OutputClass .

 SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0); String userString = example.getString("value", "defValue"); // the following will print it out in console Logger.getLogger("Name of a OutputClass".class.getName()).log(Level.INFO, userString); 

Основная идея SharedPreferences – хранить вещи в файле XML.

  1. Объявите свой путь к файлу xml (если у вас нет этого файла, Android его создаст. Если у вас есть этот файл, Android получит к нему доступ.)

     SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); 
  2. Значение записи для общих настроек

     prefs.edit().putLong("preference_file_key", 1010101).apply(); 

    preference_file_key – это имя файлов общих предпочтений. И 1010101 – это ценность, которую вам нужно сохранить.

    apply() наконец, должен сохранить изменения. Если вы получите ошибку от apply() , измените ее на commit() . Таким образом, это альтернативное предложение

     prefs.edit().putLong("preference_file_key", 1010101).commit(); 
  3. Чтение из общих настроек

     SharedPreferences sp = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); long lsp = sp.getLong("preference_file_key", -1); 

    lsp будет -1 если preference_file_key не имеет значения. Если «preference_file_key» имеет значение, оно вернет значение этого.

Весь код для написания

  SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file prefs.edit().putLong("preference_file_key", 1010101).apply(); // Write the value to key. 

Код для чтения

  SharedPreferences sf = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file long lsp = sp.getLong("preference_file_key", -1); // Read the key and store in lsp 

Сохранить в SharedPreferences

 SharedPreferences preferences = getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE); Editor editor = preferences.edit(); editor.putString("name", name); editor.commit(); 

Внести в SharedPreferences

 SharedPreferences preferences=getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE); String name=preferences.getString("name",null); 

Примечание: «temp» – это имя sharedpreferences, а «name» – входное значение. Если значение does't exit, то возврат null

Вы можете сохранить значение с помощью этого метода:

 public void savePreferencesForReasonCode(Context context, String key, String value) { SharedPreferences sharedPreferences = PreferenceManager .getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.commit(); } 

И используя этот метод, вы можете получить значение из SharedPreferences:

 public String getPreferences(Context context, String prefKey) { SharedPreferences sharedPreferences = PreferenceManager .getDefaultSharedPreferences(context); return sharedPreferences.getString(prefKey, ""); } 

Здесь prefKey – это ключ, который вы использовали для сохранения определенного значения. Благодарю.

Лучшая практика когда-либо

Создание интерфейса с помощью PreferenceManager :

 // Interface to save values in shared preferences and also for retrieve values from shared preferences public interface PreferenceManager { SharedPreferences getPreferences(); Editor editPreferences(); void setString(String key, String value); String getString(String key); void setBoolean(String key, boolean value); boolean getBoolean(String key); void setInteger(String key, int value); int getInteger(String key); void setFloat(String key, float value); float getFloat(String key); } 

Как использовать с Activity / Fragment :

 public class HomeActivity extends AppCompatActivity implements PreferenceManager{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout_activity_home); } @Override public SharedPreferences getPreferences(){ return getSharedPreferences("SP_TITLE", Context.MODE_PRIVATE); } @Override public SharedPreferences.Editor editPreferences(){ return getPreferences().edit(); } @Override public void setString(String key, String value) { editPreferences().putString(key, value).commit(); } @Override public String getString(String key) { return getPreferences().getString(key, ""); } @Override public void setBoolean(String key, boolean value) { editPreferences().putBoolean(key, value).commit(); } @Override public boolean getBoolean(String key) { return getPreferences().getBoolean(key, false); } @Override public void setInteger(String key, int value) { editPreferences().putInt(key, value).commit(); } @Override public int getInteger(String key) { return getPreferences().getInt(key, 0); } @Override public void setFloat(String key, float value) { editPreferences().putFloat(key, value).commit(); } @Override public float getFloat(String key) { return getPreferences().getFloat(key, 0); } } 

Примечание. Замените свой ключ SharedPreference на SP_TITLE .

Примеры:

Сохранить строку в shareperence :

 setString("my_key", "my_value"); 

Получить строку из shareperence :

 String strValue = getString("my_key"); 

Надеюсь, что это поможет вам.

сохранить

 PreferenceManager.getDefaultSharedPreferences(this).edit().putString("VarName","your value").apply(); 

Возвращаться:

 String name = PreferenceManager.getDefaultSharedPreferences(this).getString("VarName","defaultValue"); 

Значение по умолчанию: Значения для возврата, если это предпочтение не существует.

Вы можете изменить « это » с помощью getActivity () или getApplicationContext () в некоторых случаях

Существует много способов, которыми люди рекомендуют использовать SharedPreferences . Здесь я сделал демо-проект . Ключевой момент в выборке – использовать объект ApplicationContext и single sharedpreferences . Это демонстрирует, как использовать SharedPreferences со следующими функциями: –

  • Использование класса singelton для доступа / обновления SharedPreferences
  • Не нужно передавать контекст всегда для чтения / записи SharedPreferences
  • Он использует apply () вместо commit ()
  • Apply () isynchronus save, ничего не возвращает, сначала обновляет значение в памяти, а изменения записываются на диск позже асинхронно.
  • Commit () является синхронизирующим, он возвращает true / false на основе результата. Изменения записываются на диск синхронно
  • Работает над версиями Android 2.3+

Пример использования:

 MyAppPreference.getInstance().setSampleStringKey("some_value"); String value= MyAppPreference.getInstance().getSampleStringKey(); 

Получить исходный код здесь и подробные API можно найти здесь на developer.android.com

 editor.putString("text", mSaved.getText().toString()); 

Здесь mSaved может быть любым textview или edittext, откуда мы можем извлечь строку. Вы можете просто указать строку. Здесь текст будет ключом, который удерживает значение, полученное из mSaved (TextView или Edittext).

 SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); 

Также нет необходимости сохранять файл настроек, используя имя пакета, то есть «com.example.app». Вы можете указать свое собственное имя. Надеюсь это поможет!!

редактировать

 SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("yourValue", value); editor.commit(); 

Читать

 SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); value= pref.getString("yourValue", ""); 

Используя эту простую библиотеку , вот как вы делаете вызовы в SharedPreferences.

 TinyDB tinydb = new TinyDB(context); tinydb.putInt("clickCount", 2); tinydb.putString("userName", "john"); tinydb.putBoolean("isUserMale", true); tinydb.putList("MyUsers", mUsersArray); tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap); //These plus the corresponding get methods are all Included 

Я хотел бы добавить здесь, что большинство фрагментов для этого вопроса будут иметь что-то вроде MODE_PRIVATE при использовании SharedPreferences. Ну, MODE_PRIVATE означает, что все, что вы пишете в эту общую настройку, может быть прочитано только вашим приложением.

Независимо от того, какой ключ вы передаете методу getSharedPreferences (), андроид создает файл с таким именем и сохраняет в нем данные о предпочтениях. Также помните, что getSharedPreferences () предполагается использовать, когда вы намерены иметь несколько файлов предпочтений для вашего приложения. Если вы собираетесь использовать один файл предпочтений и хранить в нем все пары ключ-значение, используйте метод getSharedPreference (). Странно, почему каждый (включая меня) просто использует getSharedPreferences (), даже не понимая разницы между двумя этими двумя.

Следующее видеоуроку должно помочь https://www.youtube.com/watch?v=2PcAQ1NBy98

Простая и удобная :: Библиотека Android-SharedPreferences-Helper

Лучше поздно, чем никогда: я создал библиотеку Android-SharedPreferences-Helper, чтобы помочь уменьшить сложность и усилие использования SharedPreferences . Он также предоставляет некоторые расширенные функции. Немногие вещи, которые он предлагает, следующие:

  • Инициализация и настройка одной строки
  • Легко выбирать, использовать ли настройки по умолчанию или файл настроек пользователя
  • Предопределенные (по умолчанию значения типа данных) и настраиваемые (что вы можете выбрать) значения по умолчанию для каждого типа данных
  • Возможность установки другого значения по умолчанию для однократного использования только с дополнительным параметром
  • Вы можете зарегистрировать и отменить регистрацию OnSharedPreferenceChangeListener, как и для класса по умолчанию
 dependencies { ... ... compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar') } 

Декларация SharedPreferencesHelper-объекта: (рекомендуется на уровне класса)

 SharedPreferencesHelper sph; 

Активация объекта SharedPreferencesHelper: (рекомендуется в методе onCreate ())

 // use one of the following ways to instantiate sph = new SharedPreferencesHelper(this); //this will use default shared preferences sph = new SharedPreferencesHelper(this, "myappprefs"); // this will create a named shared preference file sph = new SharedPreferencesHelper(this, "myappprefs", 0); // this will allow you to specify a mode 

Ввод значений в общие настройки

Довольно просто! В отличие от способа по умолчанию (при использовании класса SharedPreferences) вам не нужно будет .edit() вызывать .edit() и .commit() .

 sph.putBoolean("boolKey", true); sph.putInt("intKey", 123); sph.putString("stringKey", "string value"); sph.putLong("longKey", 456876451); sph.putFloat("floatKey", 1.51f); // putStringSet is supported only for android versions above HONEYCOMB Set name = new HashSet(); name.add("Viral"); name.add("Patel"); sph.putStringSet("name", name); 

Это оно! Ваши значения сохраняются в общих настройках.

Получение значений из общих настроек

Опять же, только один простой вызов метода с именем ключа.

 sph.getBoolean("boolKey"); sph.getInt("intKey"); sph.getString("stringKey"); sph.getLong("longKey"); sph.getFloat("floatKey"); // getStringSet is supported only for android versions above HONEYCOMB sph.getStringSet("name"); 

Он имеет множество других расширенных функций

Ознакомьтесь с подробной информацией о расширенных функциях, инструкциях по использованию и установке и т. Д. На странице репозитория GitHub .

Здесь я создал класс Helper для использования настроек в android.

Это вспомогательный класс:

 public class PrefsUtil { public static SharedPreferences getPreference() { return PreferenceManager.getDefaultSharedPreferences(Applicatoin.getAppContext()); } public static void putBoolean(String key, boolean value) { getPreference().edit().putBoolean(key, value) .apply(); } public static boolean getBoolean(String key) { return getPreference().getBoolean(key, false); } public static void putInt(String key, int value) { getPreference().edit().putInt(key, value).apply(); } public static void delKey(String key) { getPreference().edit().remove(key).apply(); } } 

Хранить и извлекать глобальные переменные функциональным способом. Чтобы проверить, убедитесь, что на странице есть элементы Textview, раскомментируйте две строки в коде и запустите. Затем прокомментируйте две строки и запустите.
Здесь идентификатор TextView – это имя пользователя и пароль.

В каждом классе, где вы хотите его использовать, добавьте эти две процедуры в конце. Я бы хотел, чтобы эта процедура была глобальной процедурой, но не знаю, как это сделать. Это работает.

Варианты доступны везде. Он хранит переменные в «MyFile». Вы можете изменить его по-своему.

Вы называете это, используя

  storeSession("username","frans"); storeSession("password","!2#4%");*** 

Переменное имя пользователя будет заполнено «frans» и пароль с «! 2 # 4%». Даже после перезапуска они доступны.

И вы извлекаете его, используя

  password.setText(getSession(("password"))); usernames.setText(getSession(("username"))); 

Ниже всего кода моей grid.java

  package nl.yentel.yenteldb2; import android.content.SharedPreferences; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class Grid extends AppCompatActivity { private TextView usernames; private TextView password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ***// storeSession("username","frans.eilering@gmail.com"); //storeSession("password","mijn wachtwoord");*** password = (TextView) findViewById(R.id.password); password.setText(getSession(("password"))); usernames=(TextView) findViewById(R.id.username); usernames.setText(getSession(("username"))); } public void storeSession(String key, String waarde) { SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString(key, waarde); editor.commit(); } public String getSession(String key) { //http://androidexample.com/Android_SharedPreferences_Basics/index.php?view=article_discription&aid=126&aaid=146 SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); String output = pref.getString(key, null); return output; } } 

Ниже вы найдете элементы textview

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="usernames" android:id="@+id/username" android:layout_below="@+id/textView" android:layout_alignParentStart="true" android:layout_marginTop="39dp" android:hint="hier komt de username" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password" android:id="@+id/password" android:layout_below="@+id/user" android:layout_alignParentStart="true" android:hint="hier komt het wachtwoord" /> 

Я пишу вспомогательный класс для sharedpreferences:

 import android.content.Context; import android.content.SharedPreferences; /** * Created by mete_ on 23.12.2016. */ public class HelperSharedPref { Context mContext; public HelperSharedPref(Context mContext) { this.mContext = mContext; } /** * * @param key Constant RC * @param value Only String, Integer, Long, Float, Boolean types */ public void saveToSharedPref(String key, Object value) throws Exception { SharedPreferences.Editor editor = mContext.getSharedPreferences(key, Context.MODE_PRIVATE).edit(); if (value instanceof String) { editor.putString(key, (String) value); } else if (value instanceof Integer) { editor.putInt(key, (Integer) value); } else if (value instanceof Long) { editor.putLong(key, (Long) value); } else if (value instanceof Float) { editor.putFloat(key, (Float) value); } else if (value instanceof Boolean) { editor.putBoolean(key, (Boolean) value); } else { throw new Exception("Unacceptable object type"); } editor.commit(); } /** * Return String * @param key * @return null default is null */ public String loadStringFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); String restoredText = prefs.getString(key, null); return restoredText; } /** * Return int * @param key * @return null default is -1 */ public Integer loadIntegerFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Integer restoredText = prefs.getInt(key, -1); return restoredText; } /** * Return float * @param key * @return null default is -1 */ public Float loadFloatFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Float restoredText = prefs.getFloat(key, -1); return restoredText; } /** * Return long * @param key * @return null default is -1 */ public Long loadLongFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Long restoredText = prefs.getLong(key, -1); return restoredText; } /** * Return boolean * @param key * @return null default is false */ public Boolean loadBooleanFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Boolean restoredText = prefs.getBoolean(key, false); return restoredText; } } 

Я создал класс помощника, чтобы сделать мою жизнь легкой. Это универсальный класс и имеет множество методов, которые обычно используются в приложениях, таких как «Общие настройки», «Срок действия электронной почты», «Формат даты». Скопируйте этот класс в свой код и получите доступ к его методам везде, где вам нужно.

  import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.support.v4.app.FragmentActivity; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.Toast; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; /** * Created by Zohaib Hassan on 3/4/2016. */ public class Helper { private static ProgressDialog pd; public static void saveData(String key, String value, Context context) { SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); SharedPreferences.Editor editor; editor = sp.edit(); editor.putString(key, value); editor.commit(); } public static void deleteData(String key, Context context){ SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); SharedPreferences.Editor editor; editor = sp.edit(); editor.remove(key); editor.commit(); } public static String getSaveData(String key, Context context) { SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); String data = sp.getString(key, ""); return data; } public static long dateToUnix(String dt, String format) { SimpleDateFormat formatter; Date date = null; long unixtime; formatter = new SimpleDateFormat(format); try { date = formatter.parse(dt); } catch (Exception ex) { ex.printStackTrace(); } unixtime = date.getTime(); return unixtime; } public static String getData(long unixTime, String formate) { long unixSeconds = unixTime; Date date = new Date(unixSeconds); SimpleDateFormat sdf = new SimpleDateFormat(formate); String formattedDate = sdf.format(date); return formattedDate; } public static String getFormattedDate(String date, String currentFormat, String desiredFormat) { return getData(dateToUnix(date, currentFormat), desiredFormat); } public static double distance(double lat1, double lon1, double lat2, double lon2, char unit) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; if (unit == 'K') { dist = dist * 1.609344; } else if (unit == 'N') { dist = dist * 0.8684; } return (dist); } /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ /* :: This function converts decimal degrees to radians : */ /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ private static double deg2rad(double deg) { return (deg * Math.PI / 180.0); } /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ /* :: This function converts radians to decimal degrees : */ /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ private static double rad2deg(double rad) { return (rad * 180.0 / Math.PI); } public static int getRendNumber() { Random r = new Random(); return r.nextInt(360); } public static void hideKeyboard(Context context, EditText editText) { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); } public static void showLoder(Context context, String message) { pd = new ProgressDialog(context); pd.setCancelable(false); pd.setMessage(message); pd.show(); } public static void showLoderImage(Context context, String message) { pd = new ProgressDialog(context); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setCancelable(false); pd.setMessage(message); pd.show(); } public static void dismissLoder() { pd.dismiss(); } public static void toast(Context context, String text) { Toast.makeText(context, text, Toast.LENGTH_LONG).show(); } /* public static Boolean connection(Context context) { ConnectionDetector connection = new ConnectionDetector(context); if (!connection.isConnectingToInternet()) { Helper.showAlert(context, "No Internet access...!"); //Helper.toast(context, "No internet access..!"); return false; } else return true; }*/ public static void removeMapFrgment(FragmentActivity fa, int id) { android.support.v4.app.Fragment fragment; android.support.v4.app.FragmentManager fm; android.support.v4.app.FragmentTransaction ft; fm = fa.getSupportFragmentManager(); fragment = fm.findFragmentById(id); ft = fa.getSupportFragmentManager().beginTransaction(); ft.remove(fragment); ft.commit(); } public static AlertDialog showDialog(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // TODO Auto-generated method stub } }); return builder.create(); } public static void showAlert(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Alert"); builder.setMessage(message) .setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }).show(); } public static boolean isURL(String url) { if (url == null) return false; boolean foundMatch = false; try { Pattern regex = Pattern .compile( "\\b(?:(https?|ftp|file)://|www\\.)?[-A-Z0-9+&#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]\\.[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); Matcher regexMatcher = regex.matcher(url); foundMatch = regexMatcher.matches(); return foundMatch; } catch (PatternSyntaxException ex) { // Syntax error in the regular expression return false; } } public static boolean atLeastOneChr(String string) { if (string == null) return false; boolean foundMatch = false; try { Pattern regex = Pattern.compile("[a-zA-Z0-9]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); Matcher regexMatcher = regex.matcher(string); foundMatch = regexMatcher.matches(); return foundMatch; } catch (PatternSyntaxException ex) { // Syntax error in the regular expression return false; } } public static boolean isValidEmail(String email, Context context) { String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[AZ]{2,4}$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { return true; } else { // Helper.toast(context, "Email is not valid..!"); return false; } } public static boolean isValidUserName(String email, Context context) { String expression = "^[0-9a-zA-Z]+$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { return true; } else { Helper.toast(context, "Username is not valid..!"); return false; } } public static boolean isValidDateSlash(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } public static boolean isValidDateDash(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } public static boolean isValidDateDot(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd.mm.yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } }