Cách sử dụng SharedPreferences trong Android để lưu trữ, tìm nạp và chỉnh sửa các giá trị [đã đóng]


599

Tôi muốn lưu trữ một giá trị thời gian và cần lấy và chỉnh sửa nó. Làm thế nào tôi có thể sử dụng SharedPreferencesđể làm điều này?


Tôi đã thực hiện một wrapper Generic SharedPreferences, hãy xem: android-know-how-to.blogspot.co.il/2014/03/...
TacB0sS

Một cách tiếp cận đơn giản sẽ là sử dụng thư viện này: github.com/viralypatel/Android-SharedPreferences-Helper ... mở rộng chi tiết kỹ thuật trong câu trả lời của tôi ở đây ...
AndroidMechanic - Viral Patel

Câu trả lời:


838

Để có được các tùy chọn chia sẻ, hãy sử dụng phương pháp sau Trong hoạt động của bạn:

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

Để đọc tùy chọn:

String dateTimeKey = "com.example.app.datetime";

// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime()); 

Để chỉnh sửa và lưu tùy chọn

Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();

Thư mục mẫu của sdk android chứa một ví dụ về việc truy xuất và lưu trữ các tùy chọn chia sẻ. Nó nằm ở:

<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory

Chỉnh sửa ==>

Tôi nhận thấy, điều quan trọng là viết sự khác biệt giữa commit()apply()ở đây là tốt.

commit()trả về truenếu giá trị được lưu thành công khác false. Nó lưu các giá trị vào SharedPreferences một cách đồng bộ .

apply()đã được thêm vào 2.3 và không trả lại bất kỳ giá trị nào dù thành công hay thất bại. Nó lưu các giá trị vào SharedPreferences ngay lập tức nhưng bắt đầu một cam kết không đồng bộ . Chi tiết hơn ở đây .


Vì vậy, lần tới khi người dùng chạy ứng dụng của tôi, giá trị được lưu trữ đã có sẵn và tôi có thể tìm nạp nó ... đúng không?
Muhammad Maqsoodur Rehman

4
(Đối với bất cứ ai đọc ở trên) Có nó là tùy ý. Ví dụ này chỉ lưu ngày hiện tại dưới dạng tùy chọn với khóa "com.example.app.datetime".
MSpeed

1
this.getSharedPreferencescho tôi lỗi sau:The method getSharedPreferences(String, int) is undefined for the type MyActivity
Si8

15
SharedPreferences.Editor.apply () đã được giới thiệu trên Gingerbread vào tháng 11 năm 2010 (sau khi câu trả lời này được đăng). Sử dụng nó thay vì commit () khi có thể vì áp dụng () hiệu quả hơn.
UpLate

4
Editor.apply () yêu cầu API cấp 9 trở lên. bên dưới sử dụng Editor.commit ()
Lennart Rolland

283

Để lưu trữ giá trị trong tùy chọn chia sẻ:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name","Harneet");
editor.apply();

Để lấy giá trị từ các tùy chọn chia sẻ:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
    name = name + "  Sethi";  /* Edit the value here*/
}

17
Tôi thích câu trả lời này tốt nhất vì nó sử dụng getDefaultSharedPreferences. Đối với hầu hết người dùng, điều này sẽ đơn giản hóa mọi thứ vì các tùy chọn tương tự có thể được truy cập trong toàn bộ ứng dụng và bạn không phải lo lắng về việc đặt tên tệp tùy chọn của mình. Thêm thông tin về điều đó tại đây: stackoverflow.com/a/6310080/1839500
Dick Lucas

Tôi đồng tình ... Tôi đã tìm thấy điều này sau khi nhổ tóc ra để cố gắng tìm ra lý do tại sao tôi không thể truy cập vào các bảng chia sẻ của mình từ một hoạt động khác bằng phương pháp trong câu trả lời được chấp nhận. Cám ơn rất nhiều!
AreAGitForNotUsingGit

Làm thế nào tôi có thể sử dụng nó để lưu và tải Map<DateTime, Integer>?
Dmitry

Sử dụng github.com/AliEsaAssadi/Android-Power-Preference để đơn giản hóa việc triển khai
Ali Asadi

164

Để chỉnh sửa dữ liệu từ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();

Để lấy dữ liệu từ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);
  }*/
}

Biên tập

Tôi đã lấy đoạn trích này từ mẫu API Demo. Nó có một EditTextcái hộp ở đó. Trong contextđó không bắt buộc. Tôi đang bình luận như vậy.


12
+1, nhưng sử dụng getPreferences (MODE_PRIVATE); thay vì getPreferences (0); cho dễ đọc.
Khóa

MSave ở đây là gì? Tôi cần lưu 2 giá trị chuỗi.
Muhammad Maqsoodur Rehman

Tôi cũng muốn biết mSaving là gì. Nvm tôi nghĩ đó là hộp chỉnh sửa
karlstackoverflow

1
-1 có nghĩa là gì trong getInt ??
amr osama

1
Đó là giá trị mặc định sẽ được trả về nếu khóa (bắt đầu lựa chọn) không tồn tại trong sharedpreferences. Nó có thể là bất cứ điều gì và chỉ để bạn tham khảo.
DeRagan

39

Viết :

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

Đọc :

SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");

MODE_WORLD_WRITEABLE không được dùng nữa.
Christopher Smit

28

Cách dễ nhất:

Để tiết kiệm:

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

Lấy:

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

Tôi đã thử điều này giữa các hoạt động và nó không hoạt động. Có cấu trúc gói cần được bao gồm trong tên var?
Gaʀʀʏ

Để sử dụng cấu trúc này giữa các hoạt động, thay thế getPreferences (MODE_PRIVATE) bằng PreferenceManager.getDefaultSharedPreferences (hoạt động của bạn)
Lucian Novac

Sử dụng áp dụng () thay vì cam kết ()
Vaibhav

18

Đặt giá trị trong Tùy chọn:

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

Lấy dữ liệu từ ưu tiên:

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

thêm thông tin:

Sử dụng tùy chọn chia sẻ

Tùy chọn chia sẻ


MyPrefsFile là gì? Các xml của hoạt động ưu tiên?
Martin Erlic

17

Lớp tùy chọn chia sẻ Singleton. nó có thể giúp cho những người khác trong tương lai.

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

Đơn giản chỉ cần gọi SharedPref.init()về MainActivitymột lần

SharedPref.init(getApplicationContext());

Để ghi dữ liệu

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.

Để đọc dữ liệu

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

Để lưu trữ thông tin

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

Để thiết lập lại sở thích của bạn

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

12

Nếu bạn đang tạo một ứng dụng lớn với các nhà phát triển khác trong nhóm của mình và có ý định tổ chức mọi thứ tốt mà không cần mã phân tán hoặc các trường hợp SharedPreferences khác nhau, bạn có thể làm điều gì đó như sau:

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

Trong hoạt động của bạn, bạn có thể lưu SharedPreferences theo cách này

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

và bạn có thể truy xuất SharedPreferences theo cách này

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

12

Trong bất kỳ ứng dụng nào, có các tùy chọn mặc định có thể được truy cập thông qua PreferenceManagerthể hiện và phương thức liên quan của nó getDefaultSharedPreferences(Context).

Với SharedPreferenceví dụ, người ta có thể truy xuất giá trị int của bất kỳ ưu tiên nào bằng getInt (Khóa chuỗi, int defVal) . Các ưu tiên chúng tôi quan tâm trong trường hợp này là truy cập.

Trong trường hợp của chúng tôi, chúng tôi có thể sửa đổi SharedPreferencetrường hợp trong trường hợp của chúng tôi bằng cách sử dụng chỉnh sửa () và sử dụngputInt(String key, int newVal) Chúng tôi đã tăng số lượng cho ứng dụng của chúng tôi vượt ra ngoài ứng dụng và hiển thị tương ứng.

Để tiếp tục demo điều này, hãy khởi động lại và bạn áp dụng lại, bạn sẽ thấy rằng số lượng sẽ tăng lên mỗi khi bạn khởi động lại ứng dụng.

PreferencesDemo.java

Mã số:

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

tệp chính

Mã số:

<?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

Giải pháp đơn giản về cách lưu trữ giá trị đăng nhập bằng SharedPreferences.

Bạn có thể mở rộng MainActivitylớp hoặc lớp khác nơi bạn sẽ lưu trữ "giá trị của thứ bạn muốn giữ". Đặt điều này vào các lớp nhà văn và người đọc:

public static final String GAME_PREFERENCES_LOGIN = "Login";

Đây InputClasslà đầu vào và OutputClasslà lớp đầu ra, tương ứng.

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

Bây giờ bạn có thể sử dụng nó ở một nơi khác, như các lớp khác. Sau đây là 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

Lưu trữ trong SharedPreferences

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

Tìm nạp trong SharedPreferences

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

Lưu ý: "temp" là tên chia sẻ và "tên" là giá trị đầu vào. nếu giá trị không thoát thì trả về null


Rất tốt và dễ sử dụng. Nhưng đây là Context.MODE_PRIVATE không getApplicationContext (). MODE_PRIVATE
Maria Gheorghe

7

Biên tập

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

Đọc

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

6

Ý tưởng cơ bản của SharedPreferences là lưu trữ mọi thứ trên tệp XML.

  1. Khai báo đường dẫn tệp xml của bạn. (Nếu bạn không có tệp này, Android sẽ tạo tệp. Nếu bạn có tệp này, Android sẽ truy cập tệp đó.)

    SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
  2. Viết giá trị vào Sở thích được chia sẻ

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

    những preference_file_keylà tên của file sở thích chia sẻ. Và 1010101giá trị bạn cần lưu trữ.

    apply()cuối cùng là để lưu các thay đổi. Nếu bạn gặp lỗi từ apply(), thay đổi nó thành commit(). Vì vậy, câu thay thế này là

    prefs.edit().putLong("preference_file_key", 1010101).commit();
  3. Đọc từ Sở thích được chia sẻ

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

    lspsẽ là -1nếu preference_file_keykhông có giá trị. Nếu 'ưu tiên_file_key' có giá trị, nó sẽ trả về giá trị này.

Toàn bộ mã để viết là

    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.

Mã để đọc là

    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 () yêu cầu API cấp 9 trở lên. bên dưới sử dụng Editor.commit ()
Lennart Rolland

6

Bạn có thể lưu giá trị bằng phương pháp này:

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

Và sử dụng phương pháp này, bạn có thể nhận được giá trị từ SharedPreferences:

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

Đây prefKeylà chìa khóa mà bạn đã sử dụng để lưu giá trị cụ thể. Cảm ơn.


Thế còn booleans?
Yousha Aleayoub

lưu bằng cách sử dụng dòng này: Editor.putString (key, value); nhận được bằng cách sử dụng dòng này: Boolean yourLocked = prefs.getBoolean ("bị khóa", sai);
Md. Sajedul Karim

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

Ở đây, mSavedcó thể là bất kỳTextView hoặc EditTexttừ nơi chúng ta có thể trích xuất một chuỗi. bạn chỉ có thể chỉ định một chuỗi. Ở đây văn bản sẽ là khóa giữ giá trị thu được từ mSaved( TextViewhoặc EditText).

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

Ngoài ra, không cần lưu tệp ưu tiên bằng tên gói, ví dụ: "com.example.app". Bạn có thể đề cập đến tên ưa thích của riêng bạn. Hi vọng điêu nay co ich !


5

Có nhiều cách mọi người khuyên bạn nên sử dụng SharedPreferences . Tôi đã thực hiện một dự án demo ở đây . Điểm mấu chốt trong mẫu là sử dụng ApplicationContext & đối tượng sharedpreferences duy nhất . Điều này cho thấy cách sử dụng SharedPreferences với các tính năng sau: -

  • Sử dụng lớp singelton để truy cập / cập nhật SharedPreferences
  • Không cần phải luôn luôn chuyển ngữ cảnh để đọc / ghi SharedPreferences
  • Nó sử dụng áp dụng () thay vì commit ()
  • áp dụng () là lưu không đồng bộ, không trả về bất cứ thứ gì, nó cập nhật giá trị trong bộ nhớ trước & các thay đổi được ghi vào đĩa sau đó không đồng bộ.
  • commit () là lưu đồng bộ, nó trả về true / false dựa trên kết quả. Thay đổi được ghi vào đĩa đồng bộ
  • hoạt động trên phiên bản Android 2.3+

Ví dụ sử dụng như sau: -

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

Nhận mã nguồn tại đây & API chi tiết có thể được tìm thấy ở đây trên developer.android.com


Xin chào, tôi có một câu hỏi về Sở thích chung. Bạn có phiền khi trả lời nó không? stackoverflow.com/questions353713822/iêu
Ruchir Baronia

5

Thực hành tốt nhất

Tạo giao diện được đặt tên bằng 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);

}

Cách sử dụng với 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);
    }
}

Lưu ý: Thay thế khóa SharedPreference của bạn bằng SP_TITLE .

Ví dụ:

Lưu trữ chuỗi trong shareperence :

setString("my_key", "my_value");

Nhận chuỗi từ shareperence :

String strValue = getString("my_key");

Hy vọng điều này sẽ giúp bạn.


Tôi có sử dụng cùng một đối tượng tùy chọn chia sẻ để lưu trữ mọi thứ hay tôi tạo các đối tượng pref được chia sẻ mới cho mỗi phần dữ liệu khác nhau?
Ruchir Baronia

@Ruchir Baronia, không cần tạo các đối tượng khác nhau, bằng cách này, bạn không cần phải khởi tạo đối tượng của các sở thích được chia sẻ. Bạn có thể tiết kiệm bằng cách trên. Hãy cho tôi biết nếu có bất cứ điều gì yêu cầu từ phía tôi.
Hiren Patel

Được rồi, cảm ơn. Bạn có thể giúp tôi với điều này? stackoverflow.com/questions353235759/ từ
Ruchir Baronia

@Ruchir Baronia, bạn có thể hủy chủ đề. Hy vọng điều này sẽ giúp bạn.
Hiren Patel

Ồ, tôi rất xin lỗi, tôi đã đặt câu hỏi sai. Tôi muốn hỏi về điều này, về sở thích được chia sẻ :) stackoverflow.com/questions353244256/su-with-if-statement/
trộm

5

Để lưu trữ giá trị trong tùy chọn chia sẻ:

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

Để lấy giá trị từ các tùy chọn chia sẻ:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("Name", ""); // Second parameter is the default value.

4

để tiết kiệm

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

để trả thù:

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

giá trị mặc định là: Giá trị trả về nếu ưu tiên này không tồn tại.

bạn có thể thay đổi " cái này " bằng getActivity () hoặc getApplicationContext () trong một số trường hợp


Xin chào, tôi có một câu hỏi về Sở thích chung. Bạn có phiền khi trả lời nó không? stackoverflow.com/questions353713822/iêu
Ruchir Baronia

Vâng, tôi đã làm ... :)
Ruchir Baronia

3

Tôi viết một lớp trợ giúp cho các cuộc chia sẻ:

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

Sử dụng sử dụng ví dụ này đơn giản và rõ ràng và kiểm tra

<?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

Sử dụng thư viện đơn giản này , đây là cách bạn thực hiện các cuộc gọi đến 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

Tôi muốn thêm vào đây rằng hầu hết các đoạn trích cho câu hỏi này sẽ có cái gì đó giống như MODE_PRIVATE khi sử dụng SharedPreferences. Chà, MODE_PRIVATE có nghĩa là bất cứ điều gì bạn viết vào tùy chọn chia sẻ này chỉ có thể được đọc bởi ứng dụng của bạn.

Bất cứ khóa nào bạn truyền cho phương thức getSharedPreferences (), android sẽ tạo một tệp có tên đó và lưu trữ dữ liệu tùy chọn vào đó. Cũng nên nhớ rằng getSharedPreferences () được cho là sẽ được sử dụng khi bạn có ý định có nhiều tệp ưu tiên cho ứng dụng của mình. Nếu bạn có ý định sử dụng tệp ưu tiên duy nhất và lưu trữ tất cả các cặp khóa-giá trị vào đó thì hãy sử dụng phương thức getSharedPreference (). Thật kỳ lạ tại sao mọi người (bao gồm cả tôi) chỉ đơn giản sử dụng hương vị getSharedPreferences () mà không hiểu sự khác biệt giữa hai loại trên.

Hướng dẫn bằng video sau đây sẽ giúp https://www.youtube.com/watch?v=2PcAQ1NBy98


2

Đơn giản và không rắc rối :: thư viện "Android-SharedPreferences-Helper"

Muộn còn hơn không: Tôi đã tạo thư viện "Android-SharedPreferences-Helper" để giúp giảm sự phức tạp và nỗ lực sử dụng SharedPreferences. Nó cũng cung cấp một số chức năng mở rộng. Vài điều mà nó cung cấp như sau:

  • Khởi tạo và thiết lập một dòng
  • Dễ dàng chọn xem sử dụng tùy chọn mặc định hoặc tệp tùy chọn tùy chỉnh
  • Các giá trị mặc định được xác định trước (mặc định loại dữ liệu) và có thể tùy chỉnh (những gì bạn có thể chọn) cho mỗi kiểu dữ liệu
  • Khả năng đặt giá trị mặc định khác nhau cho một lần sử dụng chỉ với một thông số bổ sung
  • Bạn có thể đăng ký và hủy đăng ký OnSharedPreferenceChangeListener như bạn làm cho lớp mặc định
dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

Khai báo đối tượng SharedPreferencesHelper: (được khuyến nghị ở cấp lớp)

SharedPreferencesHelper sph; 

Khởi tạo đối tượng SharedPreferencesHelper: (được khuyến nghị trong phương thức 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

Đưa giá trị vào sở thích chung

Khá đơn giản! Không giống như cách mặc định (khi sử dụng lớp SharedPreferences), bạn sẽ KHÔNG cần gọi .edit().commit()luôn luôn gọi .

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

Đó là nó! Giá trị của bạn được lưu trữ trong các tùy chọn chia sẻ.

Nhận giá trị từ sở thích được chia sẻ

Một lần nữa, chỉ một cuộc gọi phương thức đơn giản với tên khóa.

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

Nó có rất nhiều chức năng mở rộng khác

Kiểm tra các chi tiết về chức năng mở rộng, hướng dẫn sử dụng và cài đặt, v.v. trên Trang Kho lưu trữ GitHub .


Tôi có sử dụng cùng một đối tượng tùy chọn chia sẻ để lưu trữ mọi thứ hay tôi tạo các đối tượng pref được chia sẻ mới cho mỗi phần dữ liệu khác nhau?
Ruchir Baronia

Bạn nên sử dụng càng nhiều càng tốt. Đó là toàn bộ quan điểm của việc tạo ra thư viện này.
AndroidMechanic - Viral Patel

Xin chào, tôi có một câu hỏi về Sở thích chung. Bạn có phiền khi trả lời nó không? stackoverflow.com/questions353713822/õ
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.

bạn cần sử dụng SharedPreferences trong AdapterClass hoặc bất kỳ thứ gì khác. thời gian đó chỉ cần sử dụng khai báo này và sử dụng cùng một ass ở trên.

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

//here context is your application context

cho giá trị chuỗi hoặc boolean

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

lấy dữ liệu giống như trên

String fetchvalue = prefs.getString("keyword", "");
Boolean fetchvalue = prefs.getBoolean("keyword", "");

2

2.cho lưu trữ trong chia sẻ chung

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

2. để lấy cùng sử dụng

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

1

Ở đây tôi đã tạo ra một lớp Helper để sử dụng tùy chọn trong Android.

Đây là lớp người trợ giúp:

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

Để lưu trữ và truy xuất các biến toàn cục theo cách chức năng. Để kiểm tra, hãy đảm bảo bạn có các mục Textview trên trang của mình, bỏ ghi chú hai dòng trong mã và chạy. Sau đó bình luận hai dòng một lần nữa, và chạy.
Ở đây id của TextView là tên người dùng và mật khẩu.

Trong mỗi Lớp nơi bạn muốn sử dụng nó, hãy thêm hai thói quen này vào cuối. Tôi muốn thói quen này là thói quen toàn cầu, nhưng không biết làm thế nào. Những công việc này.

Các variabels có sẵn ở khắp mọi nơi. Nó lưu các biến trong "MyFile". Bạn có thể thay đổi nó theo cách của bạn.

Bạn gọi nó bằng cách sử dụng

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

tên người dùng biến sẽ được điền "frans" và mật khẩu với "! 2 # 4%". Ngay cả sau khi khởi động lại, chúng có sẵn.

và bạn lấy nó bằng cách sử dụng

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

bên dưới toàn bộ mã của Grid.java của tôi

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

    }

bên dưới bạn tìm thấy các mục 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

Tôi đã tạo ra một lớp Người trợ giúp để làm cho Cuộc sống của tôi dễ dàng. Đây là một lớp chung và có rất nhiều phương thức thường được sử dụng trong Ứng dụng như Tùy chọn được chia sẻ, Hiệu lực của Email, Định dạng Ngày giờ. Sao chép lớp này trong mã của bạn và truy cập các phương thức của nó bất cứ nơi nào bạn cần.

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

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.