วิธีใช้ SharedPreferences ใน Android เพื่อจัดเก็บดึงและแก้ไขค่า [ปิด]


599

ฉันต้องการเก็บค่าเวลาและต้องดึงและแก้ไข ฉันSharedPreferencesจะใช้ทำสิ่งนี้ได้อย่างไร


ฉันได้ใช้ wrapper Generic SharedPreferences แล้วลองดู: android-know-how-to.blogspot.co.il/2014/03/…
TacB0sS

วิธีง่ายจะโดยการใช้ห้องสมุดนี้: github.com/viralypatel/Android-SharedPreferences-Helper ... รายละเอียดทางเทคนิคในการขยายของฉันคำตอบที่นี่ ...
AndroidMechanic - Viral เทล

คำตอบ:


838

ในการรับการตั้งค่าที่แบ่งปันให้ใช้วิธีการต่อไปนี้ในกิจกรรมของคุณ:

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 ทันที แต่จะเป็นการเปิดตรงกันกระทำ รายละเอียดเพิ่มเติมได้ที่นี่


ดังนั้นครั้งต่อไปที่ผู้ใช้รันแอพของฉันค่าที่เก็บไว้มีอยู่แล้วและฉันสามารถดึงข้อมูล ... ใช่ไหม?
Muhammad Maqsoodur Rehman

4
(สำหรับทุกคนที่อ่านข้างต้น) ใช่มันเป็นเรื่องที่ไม่แน่นอน ตัวอย่างนี้เพิ่งบันทึกวันที่ปัจจุบันเป็นการตั้งค่าด้วยคีย์ "com.example.app.datetime"
MSpeed

1
this.getSharedPreferencesทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้:The method getSharedPreferences(String, int) is undefined for the type MyActivity
Si8

15
SharedPreferences.Editor.apply () ถูกนำมาใช้ใน Gingerbread ในเดือนพฤศจิกายน 2010 (หลังจากคำตอบนี้ถูกโพสต์) ใช้แทนการกระทำ () ถ้าทำได้เนื่องจากการใช้ () มีประสิทธิภาพมากกว่า
อัปเดต

4
Editor.apply () ต้องใช้ API ระดับ 9 ขึ้นไป ด้านล่างนี้ใช้ Editor.commit ()
Lennart Rolland

283

ในการจัดเก็บค่าในการตั้งค่าที่ใช้ร่วมกัน:

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

17
ฉันชอบคำตอบนี้ดีที่สุดเพราะใช้ getDefaultSharedPreferences สำหรับผู้ใช้ส่วนใหญ่สิ่งนี้จะทำให้สิ่งต่าง ๆ ง่ายขึ้นเพราะสามารถเข้าถึงการตั้งค่าเดียวกันได้ตลอดทั้งแอพและคุณไม่ต้องกังวลเกี่ยวกับการตั้งชื่อไฟล์การตั้งค่าของคุณ เพิ่มเติมเกี่ยวกับที่นี่: stackoverflow.com/a/6310080/1839500
Dick Lucas

ฉันเห็นด้วย ... ฉันพบสิ่งนี้หลังจากดึงผมออกมาพยายามคิดว่าทำไมฉันไม่สามารถเข้าถึงการตั้งค่าที่แบ่งปันของฉันจากกิจกรรมอื่นโดยใช้วิธีในคำตอบที่ยอมรับได้ ขอบคุณมาก!
You'reAGitForNotUsingGit

ฉันจะใช้มันเพื่อบันทึกและโหลดได้Map<DateTime, Integer>อย่างไร
Dmitry

ใช้github.com/AliEsaAssadi/Android-Power-Preferenceเพื่อทำให้การติดตั้งง่ายขึ้น
Ali Asadi

164

เพื่อแก้ไขข้อมูลจากsharedpreference

 SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
 editor.putString("text", mSaved.getText().toString());
 editor.putInt("selection-start", mSaved.getSelectionStart());
 editor.putInt("selection-end", mSaved.getSelectionEnd());
 editor.apply();

เพื่อดึงข้อมูลจากsharedpreference

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) 
{
  //mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
  int selectionStart = prefs.getInt("selection-start", -1);
  int selectionEnd = prefs.getInt("selection-end", -1);
  /*if (selectionStart != -1 && selectionEnd != -1)
  {
     mSaved.setSelection(selectionStart, selectionEnd);
  }*/
}

แก้ไข

ฉันนำตัวอย่างนี้มาจากตัวอย่างการสาธิต API มันมีEditTextกล่องอยู่ที่นั่น ในสิ่งนี้contextมันไม่จำเป็นฉันกำลังแสดงความคิดเห็นแบบเดียวกัน


12
+1 แต่ใช้ getPreferences (MODE_PRIVATE); แทน getPreferences (0); สำหรับการอ่าน
คีย์

mSaved ที่นี่คืออะไร ฉันต้องการบันทึกค่าสตริง 2 ค่า
Muhammad Maqsoodur Rehman

ฉันอยากรู้ว่า mSaved คืออะไร Nvm ฉันคิดว่ามันเป็นกล่องแก้ไข
karlstackoverflow

1
-1 หมายความว่าอะไรใน getInt ??
amr osama

1
นั่นคือค่าเริ่มต้นที่จะถูกส่งคืนหากคีย์ (selection-start) ไม่มีอยู่ใน sharedpreferences มันสามารถเป็นอะไรก็ได้และเป็นเพียงสำหรับการอ้างอิงของคุณ
DeRagan

39

เขียน :

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", "");

MODE_WORLD_WRITEABLE เลิกใช้แล้ว
Christopher Smit

28

วิธีที่ง่ายที่สุด:

เพื่อบันทึก:

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

ในการดึงข้อมูล:

your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);

ฉันลองระหว่างกิจกรรมและมันไม่ทำงาน โครงสร้างแพ็กเกจจำเป็นต้องรวมอยู่ในชื่อ var หรือไม่?
Gaʀʀʏ

หากต้องการใช้โครงสร้างนี้ระหว่างกิจกรรมให้แทนที่ getPreferences (MODE_PRIVATE) ด้วย PreferenceManager.getDefaultSharedPreferences (การทำกิจกรรมของคุณ)
Lucian Novac

ใช้ Apply () แทนที่จะคอมมิชชัน ()
Vaibhav

18

การตั้งค่าในการตั้งค่า:

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

ข้อมูลเพิ่มเติม:

ใช้การตั้งค่าที่ใช้ร่วมกัน

การตั้งค่าที่ใช้ร่วมกัน


MyPrefsFile คืออะไร xml ของกิจกรรมการตั้งค่า?
Martin Erlic

17

ชั้นเรียนการตั้งค่าที่ใช้ร่วมกัน Singleton มันอาจช่วยให้ผู้อื่นในอนาคต

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.

15

เพื่อเก็บข้อมูล

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();

12

หากคุณกำลังสร้างแอพพลิเคชั่นขนาดใหญ่ร่วมกับนักพัฒนาคนอื่น ๆ ในทีมของคุณและตั้งใจที่จะจัดระเบียบทุกอย่างให้ดีโดยไม่ต้องมีรหัสกระจัดกระจายหรืออินสแตนซ์ 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);

12

ในโปรแกรมใด ๆ ที่มีการตั้งค่าเริ่มต้นที่สามารถเข้าถึงได้ผ่านทางอินสแตนซ์และวิธีการที่เกี่ยวข้องPreferenceManagergetDefaultSharedPreferences(Context)

ด้วยSharedPreferenceตัวอย่างเช่นหนึ่งสามารถเรียกค่า int ของการตั้งค่าใด ๆ กับgetInt (String สำคัญ int defVal) การตั้งค่าที่เราสนใจในกรณีนี้คือตัวนับ

ในกรณีของเราเราสามารถแก้ไขSharedPreferenceอินสแตนซ์ในกรณีของเราโดยใช้การแก้ไข () และใช้การ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>

8

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);

8

ร้านค้าใน 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" คือชื่อการเปิดเผยล่วงหน้าและ "name" เป็นค่าที่ป้อนเข้า ถ้าค่าไม่ออกแล้วส่งคืนค่า null


ดีมากและใช้งานง่าย แต่ที่นี่คือบริบทบริบท MODE_PRIVATE ไม่ได้ getApplicationContext () MODE_PRIVATE
Maria Gheorghe

7

แก้ไข

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

แนวคิดพื้นฐานของ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ไม่มีค่า หาก 'preferences_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

Editor.apply () ต้องใช้ API ระดับ 9 ขึ้นไป ด้านล่างนี้ใช้ Editor.commit ()
Lennart Rolland

6

คุณสามารถบันทึกค่าโดยใช้วิธีนี้:

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คือกุญแจสำคัญที่คุณใช้ในการบันทึกค่าเฉพาะ ขอบคุณ


แล้วบูลลีนล่ะ?
Yousha Aleayoub

บันทึกโดยใช้บรรทัดนี้: editor.putString (คีย์, ค่า); รับใช้บรรทัดนี้: บูลีน yourLocked = prefs.getBoolean ("ล็อค" เท็จ);
Md. Sajedul Karim

6
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" คุณสามารถพูดถึงชื่อที่คุณต้องการ หวังว่านี่จะช่วยได้!


5

มีหลายวิธีที่คนแนะนำวิธีการใช้งานที่มีSharedPreferences ฉันได้ทำโครงการสาธิตที่นี่ จุดสำคัญในกลุ่มตัวอย่างคือการใช้ApplicationContext & sharedpreferences เดียววัตถุ นี่แสดงให้เห็นถึงวิธีการใช้SharedPreferencesด้วยคุณสมบัติดังต่อไปนี้: -

  • การใช้คลาส Singelton เพื่อเข้าถึง / อัปเดต SharedPreferences
  • ไม่จำเป็นต้องผ่านบริบทเสมอสำหรับการอ่าน / เขียน SharedPreferences
  • มันใช้ Apply () แทนการกระทำ ()
  • Apply () isynchronus save, ไม่ส่งคืนสิ่งใด, อัพเดตค่าในหน่วยความจำก่อน & การเปลี่ยนแปลงจะถูกเขียนไปยังดิสก์ในภายหลังแบบอะซิงโครนัส
  • กระทำ () เป็นซิงโครนัสบันทึกมันกลับจริง / เท็จขึ้นอยู่กับผล การเปลี่ยนแปลงถูกเขียนไปยังดิสก์ซิงโครนัส
  • ทำงานบน Android 2.3+ เวอร์ชัน

ตัวอย่างการใช้งานดังต่อไปนี้: -

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

รับซอร์สโค้ดได้ที่นี่ & API แบบละเอียดสามารถดูได้ที่นี่บน developer.android.com


เฮ้ฉันมีคำถามเกี่ยวกับการตั้งค่าที่ใช้ร่วมกัน คุณสนใจที่จะตอบมันไหม? stackoverflow.com/questions/35713822/…
Ruchir Baronia

5

แนวปฏิบัติที่ดีที่สุดเลยทีเดียว

สร้างส่วนต่อประสานชื่อที่มี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);

}

วิธีใช้กับกิจกรรม / แฟรกเมนต์ :

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

ตัวอย่าง:

จัดเก็บสตริงในส่วนแบ่ง :

setString("my_key", "my_value");

รับสายจากshareperence :

String strValue = getString("my_key");

หวังว่านี่จะช่วยคุณได้


ฉันจะใช้ออบเจ็กต์การกำหนดค่าตามความชอบร่วมกันแบบเดียวกันเพื่อเก็บทุกอย่างหรือฉันจะสร้างออบเจ็กต์การแบ่งปันล่วงหน้าใหม่สำหรับข้อมูลแต่ละส่วนที่แตกต่างกันหรือไม่
Ruchir Baronia

@Ruchir Baronia ไม่จำเป็นต้องสร้างออบเจ็กต์ที่แตกต่างกันโดยที่คุณไม่จำเป็นต้องเริ่มต้นออบเจ็กต์ของการตั้งค่าที่ใช้ร่วมกัน คุณสามารถบันทึกโดยวิธีข้างต้น แจ้งให้เราทราบหากมีสิ่งจำเป็นจากด้านข้างของฉัน
Hiren Patel

โอเคขอบคุณ. คุณช่วยฉันได้ไหม stackoverflow.com/questions/35235759/…
Ruchir Baronia

@Ruchir Baronia คุณสามารถยกเลิกชุดข้อความ หวังว่านี่จะช่วยคุณได้
Hiren Patel

โอ้ฉันขอโทษฉันใส่คำถามผิดฉันตั้งใจจะถามเกี่ยวกับเรื่องนี้มันเกี่ยวกับการตั้งค่าที่ใช้ร่วมกัน :) stackoverflow.com/questions/35244256/issue-with-if-statement/
Ruchir Baronia

5

ในการจัดเก็บค่าในการตั้งค่าที่ใช้ร่วมกัน:

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.

4

เพื่อบันทึก

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

เพื่อตอบโต้:

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

ค่าเริ่มต้นคือ: ค่าที่จะส่งคืนหากไม่มีการกำหนดลักษณะนี้

คุณสามารถเปลี่ยน " this " ด้วยgetActivity ()หรือgetApplicationContext ()ในบางกรณี


เฮ้ฉันมีคำถามเกี่ยวกับการตั้งค่าที่ใช้ร่วมกัน คุณสนใจที่จะตอบมันไหม? stackoverflow.com/questions/35713822/…
Ruchir Baronia

ใช่ฉันทำ ... :)
Ruchir Baronia

3

ฉันเขียนชั้นผู้ช่วยสำหรับการแชร์ล่วงหน้า:

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

}

3

ใช้ใช้ตัวอย่างนี้ง่ายและชัดเจนและตรวจสอบ

<?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();
         }
      });
   }

}

2

ใช้ไลบรารีอย่างง่ายนี่คือวิธีที่คุณโทรไปยัง 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

ฉันต้องการเพิ่มที่นี่ว่าตัวอย่างข้อมูลส่วนใหญ่สำหรับคำถามนี้จะมีอะไรบางอย่างเช่น MODE_PRIVATE เมื่อใช้ SharedPreferences ดี MODE_PRIVATE หมายความว่าสิ่งที่คุณเขียนลงในการตั้งค่าที่ใช้ร่วมกันนี้สามารถอ่านได้โดยแอปพลิเคชันของคุณเท่านั้น

สิ่งที่สำคัญที่คุณส่งผ่านไปยังเมธอด getSharedPreferences () แอนดรอยด์จะสร้างไฟล์ที่มีชื่อนั้นและเก็บข้อมูลการตั้งค่าไว้ โปรดจำไว้ด้วยว่าควรจะใช้ getSharedPreferences () เมื่อคุณต้องการให้มีไฟล์การกำหนดค่าตามความชอบหลายไฟล์สำหรับแอปพลิเคชันของคุณ หากคุณต้องการใช้ไฟล์การกำหนดค่าตามความชอบเดียวและเก็บคู่คีย์ - ค่าทั้งหมดไว้ในนั้นให้ใช้เมธอด getSharedPreference () มันแปลก ๆ ว่าทำไมทุกคน (รวมถึงตัวฉันเอง) ก็ใช้ getSharedPreferences () รสชาติโดยไม่เข้าใจความแตกต่างระหว่างสองอย่างนี้

วิดีโอแนะนำต่อไปนี้ควรช่วย https://www.youtube.com/watch?v=2PcAQ1NBy98


2

ง่ายและไม่ยุ่งยาก :: ห้องสมุด "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");

มันมีฟังก์ชั่นเพิ่มเติมอื่น ๆ อีกมากมาย

ตรวจสอบรายละเอียดของการขยายการทำงาน, การใช้และคำแนะนำการติดตั้ง ฯลฯ บนGitHub Repository หน้า


ฉันจะใช้ออบเจ็กต์การกำหนดค่าตามความชอบร่วมกันแบบเดียวกันเพื่อเก็บทุกอย่างหรือฉันจะสร้างออบเจ็กต์การแบ่งปันล่วงหน้าใหม่สำหรับข้อมูลแต่ละส่วนที่แตกต่างกันหรือไม่
Ruchir Baronia

คุณควรใช้แบบเดียวกันให้มากที่สุด นั่นคือจุดรวมของการทำห้องสมุดนี้
AndroidMechanic - Viral Patel

เฮ้ฉันมีคำถามเกี่ยวกับการตั้งค่าที่ใช้ร่วมกัน คุณสนใจที่จะตอบมันไหม? stackoverflow.com/questions/35713822/…
Ruchir Baronia

2
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", "");

2

2. สำหรับการจัดเก็บใน prefrence ที่ใช้ร่วมกัน

SharedPreferences.Editor editor = 
getSharedPreferences("DeviceToken",MODE_PRIVATE).edit();
                    editor.putString("DeviceTokenkey","ABABABABABABABB12345");
editor.apply();

2. สำหรับการดึงข้อมูลการใช้งานเดิม

    SharedPreferences prefs = getSharedPreferences("DeviceToken", 
 MODE_PRIVATE);
  String deviceToken = prefs.getString("DeviceTokenkey", null);

1

ที่นี่ฉันได้สร้างคลาส 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

เพื่อจัดเก็บและดึงตัวแปรทั่วโลกในลักษณะการทำงาน ในการทดสอบตรวจสอบให้แน่ใจว่าคุณมีรายการ Textview ในหน้าของคุณโดยไม่ใส่หมายเหตุสองบรรทัดในรหัสและเรียกใช้ จากนั้นคอมเม้นท์สองบรรทัดอีกครั้งแล้วรัน
ที่นี่ id ของ 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
    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

ฉันได้สร้างคลาสผู้ช่วยเพื่อทำให้ชีวิตของฉันง่ายขึ้น นี่เป็นคลาสทั่วไปและมีวิธีการมากมายที่ใช้กันทั่วไปในแอปเช่นการตั้งค่าที่ใช้ร่วมกันความถูกต้องของอีเมลรูปแบบเวลาวันที่ คัดลอกคลาสนี้ในรหัสของคุณและเข้าถึงวิธีการทุกที่ที่คุณต้องการ

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

}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.