Почему мои SharedPreferences не работают? [Дубликат]

Я взломал это для выпуска Bootstrap 4.1.1 в соответствии с моими потребностями, прежде чем увидел сообщение @ florian_korner. Выглядит очень похоже.

Если вы используете sass, вы можете вставить этот фрагмент в конце вашего загрузочного диска. Похоже, проблема исправлена ​​для Chrome, IE и края. Кажется, что ничего не сломалось в firefox.

@mixin make-td-col($size, $columns: $grid-columns) {
    width: percentage($size / $columns);
}

@each $breakpoint in map-keys($grid-breakpoints) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    @for $i from 1 through $grid-columns {
        td.col#{$infix}-#{$i}, th.col#{$infix}-#{$i} {
            @include make-td-col($i, $grid-columns);
        }
    }
}

или если вы просто хотите скомпилированную утилиту css:

td.col-1, th.col-1 {
  width: 8.33333%; }

td.col-2, th.col-2 {
  width: 16.66667%; }

td.col-3, th.col-3 {
  width: 25%; }

td.col-4, th.col-4 {
  width: 33.33333%; }

td.col-5, th.col-5 {
  width: 41.66667%; }

td.col-6, th.col-6 {
  width: 50%; }

td.col-7, th.col-7 {
  width: 58.33333%; }

td.col-8, th.col-8 {
  width: 66.66667%; }

td.col-9, th.col-9 {
  width: 75%; }

td.col-10, th.col-10 {
  width: 83.33333%; }

td.col-11, th.col-11 {
  width: 91.66667%; }

td.col-12, th.col-12 {
  width: 100%; }

td.col-sm-1, th.col-sm-1 {
  width: 8.33333%; }

td.col-sm-2, th.col-sm-2 {
  width: 16.66667%; }

td.col-sm-3, th.col-sm-3 {
  width: 25%; }

td.col-sm-4, th.col-sm-4 {
  width: 33.33333%; }

td.col-sm-5, th.col-sm-5 {
  width: 41.66667%; }

td.col-sm-6, th.col-sm-6 {
  width: 50%; }

td.col-sm-7, th.col-sm-7 {
  width: 58.33333%; }

td.col-sm-8, th.col-sm-8 {
  width: 66.66667%; }

td.col-sm-9, th.col-sm-9 {
  width: 75%; }

td.col-sm-10, th.col-sm-10 {
  width: 83.33333%; }

td.col-sm-11, th.col-sm-11 {
  width: 91.66667%; }

td.col-sm-12, th.col-sm-12 {
  width: 100%; }

td.col-md-1, th.col-md-1 {
  width: 8.33333%; }

td.col-md-2, th.col-md-2 {
  width: 16.66667%; }

td.col-md-3, th.col-md-3 {
  width: 25%; }

td.col-md-4, th.col-md-4 {
  width: 33.33333%; }

td.col-md-5, th.col-md-5 {
  width: 41.66667%; }

td.col-md-6, th.col-md-6 {
  width: 50%; }

td.col-md-7, th.col-md-7 {
  width: 58.33333%; }

td.col-md-8, th.col-md-8 {
  width: 66.66667%; }

td.col-md-9, th.col-md-9 {
  width: 75%; }

td.col-md-10, th.col-md-10 {
  width: 83.33333%; }

td.col-md-11, th.col-md-11 {
  width: 91.66667%; }

td.col-md-12, th.col-md-12 {
  width: 100%; }

td.col-lg-1, th.col-lg-1 {
  width: 8.33333%; }

td.col-lg-2, th.col-lg-2 {
  width: 16.66667%; }

td.col-lg-3, th.col-lg-3 {
  width: 25%; }

td.col-lg-4, th.col-lg-4 {
  width: 33.33333%; }

td.col-lg-5, th.col-lg-5 {
  width: 41.66667%; }

td.col-lg-6, th.col-lg-6 {
  width: 50%; }

td.col-lg-7, th.col-lg-7 {
  width: 58.33333%; }

td.col-lg-8, th.col-lg-8 {
  width: 66.66667%; }

td.col-lg-9, th.col-lg-9 {
  width: 75%; }

td.col-lg-10, th.col-lg-10 {
  width: 83.33333%; }

td.col-lg-11, th.col-lg-11 {
  width: 91.66667%; }

td.col-lg-12, th.col-lg-12 {
  width: 100%; }

td.col-xl-1, th.col-xl-1 {
  width: 8.33333%; }

td.col-xl-2, th.col-xl-2 {
  width: 16.66667%; }

td.col-xl-3, th.col-xl-3 {
  width: 25%; }

td.col-xl-4, th.col-xl-4 {
  width: 33.33333%; }

td.col-xl-5, th.col-xl-5 {
  width: 41.66667%; }

td.col-xl-6, th.col-xl-6 {
  width: 50%; }

td.col-xl-7, th.col-xl-7 {
  width: 58.33333%; }

td.col-xl-8, th.col-xl-8 {
  width: 66.66667%; }

td.col-xl-9, th.col-xl-9 {
  width: 75%; }

td.col-xl-10, th.col-xl-10 {
  width: 83.33333%; }

td.col-xl-11, th.col-xl-11 {
  width: 91.66667%; }

td.col-xl-12, th.col-xl-12 {
  width: 100%; }
600
задан Igor Tyulkanov 14 December 2015 в 03:23
поделиться

32 ответа

Чтобы получить общие настройки, используйте следующий метод. В вашей деятельности:

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

Edit ==>

Я заметил, что здесь важно записать разницу между commit() и apply().

commit() return true, если значение сохранено успешно в противном случае false. Он сохраняет значения в SharedPreferences синхронно.

apply() был добавлен в 2.3 и не возвращает никакого значения ни об успехе, ни об ошибке. Он сохраняет значения в SharedPreferences сразу, но начинает асинхронную фиксацию. Более подробно здесь .

769
ответ дан Vasily Kabunov 18 August 2018 в 20:43
поделиться
  • 1
    Таким образом, в следующий раз, когда пользователь запускает мое приложение, хранимое значение уже есть, и я могу его получить ... правильно? – Muhammad Maqsoodur Rehman 2 September 2010 в 08:09
  • 2
    Да, вы можете получить его. – naikus 2 September 2010 в 08:40
  • 3
    (Кто-нибудь читает выше) Да, это произвольно. Этот пример просто сохраняет текущую дату в качестве предпочтения с ключом «com.example.app.datetime». – Mike Speed 15 January 2013 в 21:20
  • 4
  • 5
    SharedPreferences.Editor.apply () был введен в Gingerbread в ноябре 2010 года (после того, как этот ответ был опубликован). Используйте его вместо commit (), когда это возможно, поскольку apply () более эффективен. – UpLate 31 July 2013 в 22:04
  • 6
    Editor.apply () требует уровня API 9 или выше. ниже, что использование Editor.commit () – Lennart Rolland 31 December 2014 в 08:05

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

  • Использование класса singelton для доступа / обновления SharedPreferences
  • Не нужно передавать контекст всегда для чтения / записи SharedPreferences
  • Он использует apply () вместо commit ()
  • apply () - это asynchronus save, ничего не возвращает, он обновляет значение в памяти сначала & amp; изменения записываются на диск позже асинхронно.
  • commit () является синхронизирующим, он возвращает true / false на основе результата. Изменения записываются на диск синхронно
  • работает в версиях android 2.3+

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

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

Get исходный код здесь & amp; Подробные API можно найти здесь здесь на developer.android.com

4
ответ дан Akhil 18 August 2018 в 20:43
поделиться
  • 1
    Вы можете использовать то же самое. – Akhil 6 February 2016 в 19:11
  • 2
    Привет, у меня есть вопрос об общих предпочтениях. Не возражаете ли вы ответить? [Д0] stackoverflow.com/questions/35713822/… – Ruchir Baronia 1 March 2016 в 03:59

Если вы делаете большое приложение с другими разработчиками в своей команде и собираетесь иметь все хорошо организованное без разброса кода или разных экземпляров 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);
11
ответ дан alexm 18 August 2018 в 20:43
поделиться

Простое решение о том, как сохранить значение входа в 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);
7
ответ дан andr 18 August 2018 в 20:43
поделиться

Простая и без проблем :: Библиотека 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() и .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");

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

. Проверьте детали расширенных функций, инструкций по использованию и установке и т. д. на странице g6] GitHub Repository .

2
ответ дан AndroidMechanic - Viral Patel 18 August 2018 в 20:43
поделиться
  • 1
    Использовать ли я один и тот же общий объект предпочтений для хранения всего, или создать новые общие объекты pref для каждой отдельной части данных? – Ruchir Baronia 6 February 2016 в 18:52
  • 2
    Вы должны использовать то же самое, насколько это возможно. В этом весь смысл создания этой библиотеки. – AndroidMechanic - Viral Patel 6 February 2016 в 18:53
  • 3
    Привет, у меня есть вопрос об общих предпочтениях. Не возражаете ли вы ответить? [Д0] stackoverflow.com/questions/35713822/… – Ruchir Baronia 1 March 2016 в 04:00

Самый простой способ:

Сохранить:

getPreferences(MODE_PRIVATE).edit().putString("Name of variable",value).commit();

Для извлечения:

your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
23
ответ дан cricket_007 18 August 2018 в 20:43
поделиться
  • 1
    Я пробовал это между действиями, и это не сработало. Нужно ли включать структуру пакета в имя var? – Gaʀʀʏ 2 May 2012 в 23:36
  • 2
    Отправьте его с умыслом – Sindri Þór 26 January 2016 в 15:57
  • 3
    Чтобы использовать эту структуру между действиями, замените getPreferences (MODE_PRIVATE) на PreferenceManager.getDefaultSharedPreferences (ваша активность) – Lucian Novac 5 July 2017 в 06:40

Изменить

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", "");
6
ответ дан Faxriddin Abdullayev 18 August 2018 в 20:43
поделиться

Сохранять и извлекать глобальные переменные функциональным способом. Чтобы проверить, убедитесь, что на странице есть элементы 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" />
1
ответ дан frans eilering 18 August 2018 в 20:43
поделиться

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

Создать интерфейс с помощью 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");

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

5
ответ дан Hiren Patel 18 August 2018 в 20:43
поделиться
  • 1
    Использовать ли я один и тот же общий объект предпочтений для хранения всего, или создать новые общие объекты pref для каждой отдельной части данных? – Ruchir Baronia 6 February 2016 в 18:52
  • 2
    @Ruchir Baronia, не нужно создавать разные объекты, кстати, вам не нужно инициализировать объект общих настроек. Вы можете сэкономить выше. Дай мне знать, если что-нибудь понадобится с моей стороны. – Hiren Patel 6 February 2016 в 19:05
  • 3
    Хорошо спасибо. ты можешь помочь мне с этим? [Д0] stackoverflow.com/questions/35235759/… – Ruchir Baronia 6 February 2016 в 19:06
  • 4
    @Ruchir Baronia, вы можете отменить нить. Надеюсь, это вам поможет. – Hiren Patel 6 February 2016 в 19:10
  • 5
    О, мне очень жаль, я задал неправильный вопрос. Я хотел спросить об этом, о общих настройках :) stackoverflow.com/questions/35244256/issue-with-if-statement/… – Ruchir Baronia 6 February 2016 в 19:13

Чтобы сохранить значения в общих настройках:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sp.edit();
editor.putString("Name","Jayesh");
editor.commit();

Чтобы получить значения из общих настроек:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("Name", "");
1
ответ дан Jayesh 18 August 2018 в 20:43
поделиться

Установка значений в Предпочтения:

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

Дополнительная информация:

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

Общие предпочтения

15
ответ дан Jorgesys 18 August 2018 в 20:43
поделиться

Чтобы сохранить значения в общих настройках:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sp.edit();
editor.putString("Name","Jayesh");
editor.commit();

Чтобы получить значения из общих настроек:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("Name", ""); // Second parameter is the default value.
2
ответ дан Joshua Pinter 18 August 2018 в 20:43
поделиться

Основная идея 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
5
ответ дан kakarott 18 August 2018 в 20:43
поделиться
  • 1
    Editor.apply () требует уровня API 9 или выше. ниже, что использование Editor.commit () – Lennart Rolland 31 December 2014 в 08:05

Используя эту простую библиотеку , вот как вы делаете вызовы в 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
2
ответ дан kc ochibili 18 August 2018 в 20:43
поделиться
editor.putString("text", mSaved.getText().toString());

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

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

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

159
ответ дан KeLiuyue 18 August 2018 в 20:43
поделиться
  • 1
    +1, но используйте getPreferences (MODE_PRIVATE); вместо getPreferences (0); для удобочитаемости. – Key 2 September 2010 в 07:35
  • 2
    Что здесь mSaved? Мне нужно сохранить 2 строковых значения. – Muhammad Maqsoodur Rehman 2 September 2010 в 07:36
  • 3
    Я также хотел бы знать, что такое mSaved. Nvm я думаю, что это поле редактирования – karlstackoverflow 5 June 2012 в 01:19
  • 4
    что -1 означает в getInt ?? – amr osama 17 July 2014 в 10:51
  • 5
    Это значение по умолчанию будет возвращено, если ключ (выбор-старт) не существует в sharedpreferences. Это может быть что угодно и только для вашей справки. – DeRagan 17 July 2014 в 19:43

Здесь я создал класс 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();

}

}
1
ответ дан Manokar 18 August 2018 в 20:43
поделиться

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

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 - это ключ, который вы использовали для сохранения определенного значения. Спасибо.

5
ответ дан Md. Sajedul Karim 18 August 2018 в 20:43
поделиться
  • 1
    Как насчет булевых? – Yousha Aleayoub 26 March 2016 в 10:27
  • 2
    сохранить с помощью этой строки: editor.putString (ключ, значение); используйте эту строку: Boolean yourLocked = prefs.getBoolean (& quot; locked & quot ;, false); – Md. Sajedul Karim 26 March 2016 в 18:18

Я пишу вспомогательный класс для 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;
}

}
2
ответ дан Mete 18 August 2018 в 20:43
поделиться

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.
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.
10
ответ дан Muhammad Hashim Shafiq 18 August 2018 в 20:43
поделиться

для сохранения

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

для возврата:

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

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

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

4
ответ дан Nadir Belhaj 18 August 2018 в 20:43
поделиться
  • 1
    Привет, у меня есть вопрос об общих предпочтениях. Не возражаете ли вы ответить? [Д0] stackoverflow.com/questions/35713822/… – Ruchir Baronia 1 March 2016 в 03:59
  • 2
    Да... :) – Ruchir Baronia 2 March 2016 в 01:48

Сохранить в SharedPreferences

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

Fetch в SharedPreferences

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

Примечание: «temp» - это имя sharedpreferences и «name» - это входное значение. если значение не выйдет, верните null

7
ответ дан Ravi Parsania 18 August 2018 в 20:43
поделиться
  • 1
    Очень хороший и простой в использовании. Но здесь Context.MODE_PRIVATE не getApplicationContext (). MODE_PRIVATE – Maria Gheorghe 2 May 2015 в 06:17

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

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

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

2
ответ дан Sandeep 18 August 2018 в 20:43
поделиться

To Write:

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", "");
34
ответ дан Satish Sharma 18 August 2018 в 20:43
поделиться

Использовать этот пример просто и ясно и проверено

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >

      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >

         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>

      </activity>

   </application>
</manifest>
public class MainActivity extends AppCompatActivity {
   EditText ed1,ed2,ed3;
   Button b1;

   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";

   SharedPreferences sharedpreferences;

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

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);

      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();
            Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }

}
3
ответ дан Sohaib Aslam 18 August 2018 в 20:43
поделиться
SharedPreferences.Editor editor = getSharedPreferences("identifier", 
MODE_PRIVATE).edit();
//identifier is the unique to fetch data from your SharedPreference.


editor.putInt("keyword", 0); 
// saved value place with 0.
//use this "keyword" to fetch saved value again.
editor.commit();//important line without this line your value is not stored in preference   

// fetch the stored data using ....

SharedPreferences prefs = getSharedPreferences("identifier", MODE_PRIVATE); 
// here both identifier will same

int fetchvalue = prefs.getInt("keyword", 0);
// here keyword will same as used above.
// 0 is default value when you nothing save in preference that time fetch value is 0.

вам нужно использовать SharedPreferences в AdapterClass или любом другом. в этот раз просто используйте это объявление и используйте ту же самую задницу выше.

SharedPreferences.Editor editor = context.getSharedPreferences("idetifier", 
Context.MODE_PRIVATE).edit();
SharedPreferences prefs = context.getSharedPreferences("identifier", Context.MODE_PRIVATE);

//here context is your application context

для строкового или логического значения

editor.putString("stringkeyword", "your string"); 
editor.putBoolean("booleankeyword","your boolean value");
editor.commit();

извлекают данные так же, как указано выше

String fetchvalue = prefs.getString("keyword", "");
Boolean fetchvalue = prefs.getBoolean("keyword", "");
1
ответ дан Vishal 05 18 August 2018 в 20:43
поделиться

Чтобы сохранить значения в общих настройках:

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*/
}
246
ответ дан Ziem 18 August 2018 в 20:43
поделиться
  • 1
    Мне нравится этот ответ лучше всего, потому что он использует getDefaultSharedPreferences. Для большинства пользователей это упростит ситуацию, потому что одни и те же настройки могут быть доступны во всем приложении, и вам не нужно беспокоиться об именовании файла настроек. Подробнее об этом здесь: stackoverflow.com/a/6310080/1839500 – Dick Lucas 1 September 2014 в 16:03
  • 2
    Я согласен ... Я нашел это после того, как вытащил свои волосы, пытаясь понять, почему я не смог получить доступ к своим общим предпочтениям из другого занятия, используя метод в принятом ответе. Большое спасибо! – Android Dev 22 December 2016 в 16:38
  • 3

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

 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\\-]+\\.)+[A-Z]{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;
}

}
1
ответ дан Zohaib Hassan 18 August 2018 в 20:43
поделиться

В любом приложении есть настройки по умолчанию, которые можно получить через экземпляр 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>
159
ответ дан KeLiuyue 18 August 2018 в 20:43
поделиться
  • 1
    +1, но используйте getPreferences (MODE_PRIVATE); вместо getPreferences (0); для удобочитаемости. – Key 2 September 2010 в 07:35
  • 2
    Что здесь mSaved? Мне нужно сохранить 2 строковых значения. – Muhammad Maqsoodur Rehman 2 September 2010 в 07:36
  • 3
    Я также хотел бы знать, что такое mSaved. Nvm я думаю, что это поле редактирования – karlstackoverflow 5 June 2012 в 01:19
  • 4
    что -1 означает в getInt ?? – amr osama 17 July 2014 в 10:51
  • 5
    Это значение по умолчанию будет возвращено, если ключ (выбор-старт) не существует в sharedpreferences.It может быть что угодно и только для вашей справки. – DeRagan 17 July 2014 в 19:43
159
ответ дан KeLiuyue 7 September 2018 в 04:44
поделиться
159
ответ дан KeLiuyue 7 September 2018 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: