Verwendung von SharedPreferences in Android zum Speichern, Abrufen und Bearbeiten von Werten [geschlossen]

599

Ich möchte einen Zeitwert speichern und muss ihn abrufen und bearbeiten. Wie kann ich SharedPreferencesdas machen?

Muhammad Maqsoodur Rehman
quelle
Ich habe einen generischen SharedPreferences-Wrapper implementiert. Schauen Sie sich das an: android-know-how-to.blogspot.co.il/2014/03/…
TacB0sS
Ein vereinfachter Ansatz wäre die Verwendung dieser Bibliothek: github.com/viralypatel/Android-SharedPreferences-Helper ... erweiterte technische Details in meiner Antwort hier ...
AndroidMechanic - Viral Patel

Antworten:

838

Verwenden Sie in Ihrer Aktivität die folgende Methode, um gemeinsame Einstellungen zu erhalten:

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

So lesen Sie Einstellungen:

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

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

Einstellungen bearbeiten und speichern

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

Das Beispielverzeichnis des Android SDK enthält ein Beispiel für das Abrufen und Speichern gemeinsamer Einstellungen. Es befindet sich in:

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

Bearbeiten ==>

Mir ist aufgefallen, dass es wichtig ist, auch hier einen Unterschied zwischen commit()und zu schreiben apply().

commit()Rückgabe, truewenn der Wert andernfalls erfolgreich gespeichert wurde false. Es speichert Werte synchron in SharedPreferences .

apply()wurde in 2.3 hinzugefügt und gibt weder bei Erfolg noch bei Misserfolg einen Wert zurück. Es speichert Werte sofort in SharedPreferences, startet jedoch eine asynchrone Festschreibung . Weitere Details finden Sie hier .

Naikus
quelle
Wenn der Benutzer meine App das nächste Mal ausführt, ist der gespeicherte Wert bereits vorhanden und ich kann ihn abrufen ... richtig?
Muhammad Maqsoodur Rehman
4
(Für jeden, der das oben genannte liest) Ja, es ist willkürlich. In diesem Beispiel wird nur das aktuelle Datum als Voreinstellung mit dem Schlüssel "com.example.app.datetime" gespeichert.
MSpeed
1
this.getSharedPreferencesgibt mir den folgenden Fehler:The method getSharedPreferences(String, int) is undefined for the type MyActivity
Si8
15
SharedPreferences.Editor.apply () wurde im November 2010 in Gingerbread eingeführt (nachdem diese Antwort veröffentlicht wurde). Verwenden Sie es nach Möglichkeit anstelle von commit (), da apply () effizienter ist.
UpLate
4
Editor.apply () erfordert API-Level 9 oder höher. Darunter verwenden Sie Editor.commit ()
Lennart Rolland
283

So speichern Sie Werte in gemeinsamen Einstellungen:

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

So rufen Sie Werte aus freigegebenen Einstellungen ab:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
    name = name + "  Sethi";  /* Edit the value here*/
}
Harneet Kaur
quelle
17
Diese Antwort gefällt mir am besten, weil sie getDefaultSharedPreferences verwendet. Für die meisten Benutzer vereinfacht dies die Arbeit, da in der gesamten App auf dieselben Einstellungen zugegriffen werden kann und Sie sich nicht um die Benennung Ihrer Voreinstellungsdatei kümmern müssen. Mehr dazu hier: stackoverflow.com/a/6310080/1839500
Dick Lucas
Ich stimme zu ... Ich fand dies, nachdem ich mir die Haare ausgezogen hatte, um herauszufinden, warum ich mit der in der akzeptierten Antwort angegebenen Methode nicht von einer anderen Aktivität aus auf meine freigegebenen Einstellungen zugreifen konnte. Vielen Dank!
You'reAGitForNotUsingGit
Wie kann ich damit speichern und laden Map<DateTime, Integer>?
Dmitry
Verwenden Sie github.com/AliEsaAssadi/Android-Power-Preference , um die Implementierung zu vereinfachen
Ali Asadi
164

Zum Bearbeiten von Daten aussharedpreference

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

Zum Abrufen von Daten aussharedpreference

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

Bearbeiten

Ich habe dieses Snippet aus dem API-Demo-Beispiel genommen. Es hatte dort eine EditTextKiste. Dies contextist nicht erforderlich. Ich kommentiere das gleiche.

DeRagan
quelle
12
+1, aber benutze getPreferences (MODE_PRIVATE); anstelle von getPreferences (0); zur besseren Lesbarkeit.
Schlüssel
Was ist mSaved hier? Ich muss 2 Zeichenfolgenwerte speichern.
Muhammad Maqsoodur Rehman
Ich würde auch gerne wissen, was mSaved ist. Nvm ich denke, es ist die Editbox
Karlstackoverflow
1
Was bedeutet -1 in getInt?
Amr Osama
1
Dies ist der Standardwert, der zurückgegeben wird, wenn der Schlüssel (Auswahl-Start) in gemeinsam genutzten Einstellungen nicht vorhanden ist. Er kann alles sein und dient nur als Referenz.
DeRagan
39

Schreiben :

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

Lesen :

SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
Paketüberfluss
quelle
MODE_WORLD_WRITEABLE ist veraltet.
Christopher Smit
28

Einfachster Weg:

Speichern:

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

So rufen Sie ab:

your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
ArcDare
quelle
Ich habe dies zwischen den Aktivitäten versucht und es hat nicht funktioniert. Muss die Paketstruktur im Variablennamen enthalten sein?
Gaʀʀʏ
Um diese Struktur zwischen Aktivitäten zu verwenden, ersetzen Sie getPreferences (MODE_PRIVATE) durch PreferenceManager.getDefaultSharedPreferences (Ihre Aktivität)
Lucian Novac
Verwenden Sie apply () anstelle von commit ()
Vaibhav
18

Einstellen von Werten in den Einstellungen:

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

Daten von Präferenz abrufen:

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

Mehr Info:

Gemeinsame Einstellungen verwenden

Gemeinsame Einstellungen

Jorgesys
quelle
Was ist MyPrefsFile? Die XML der Präferenzaktivität?
Martin Erlic
17

Singleton Shared Preferences-Klasse. es kann in Zukunft für andere helfen.

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

Rufen Sie einfach SharedPref.init()auf MainActivityeinmal

SharedPref.init(getApplicationContext());

Daten schreiben

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.

Daten lesen

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.
Magesh Pandian
quelle
15

Informationen speichern

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

So setzen Sie Ihre Einstellungen zurück

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

Wenn Sie mit anderen Entwicklern in Ihrem Team eine große Anwendung erstellen und beabsichtigen, alles ohne verstreuten Code oder andere SharedPreferences-Instanzen gut zu organisieren, können Sie Folgendes tun:

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

In Ihrer Aktivität können Sie SharedPreferences auf diese Weise speichern

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

Auf diese Weise können Sie Ihre SharedPreferences abrufen

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

In jeder Anwendung gibt es Standardeinstellungen, auf die über die PreferenceManagerInstanz und die zugehörige Methode zugegriffen werden kann getDefaultSharedPreferences(Context).

Mit der SharedPreferenceInstanz kann man den int-Wert einer beliebigen Präferenz mit getInt (String key, int defVal) abrufen . Die Präferenz, die uns in diesem Fall interessiert, ist Zähler.

In unserem Fall können wir die SharedPreferenceInstanz in unserem Fall mit edit () ändern und verwenden. putInt(String key, int newVal)Wir haben die Anzahl für unsere Anwendung erhöht, die über die Anwendung hinaus besteht und entsprechend angezeigt wird.

Um dies weiter zu demonstrieren, starten Sie neu und Sie wenden die Anwendung erneut an. Sie werden feststellen, dass sich die Anzahl jedes Mal erhöht, wenn Sie die Anwendung neu starten.

PreferencesDemo.java

Code:

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

Code:

<?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>
Sathish
quelle
8

Einfache Lösung zum Speichern des Anmeldewerts in SharedPreferences.

Sie können die MainActivityKlasse oder eine andere Klasse erweitern, in der Sie den "Wert von etwas speichern, das Sie behalten möchten". Setzen Sie dies in Autoren- und Leserklassen ein:

public static final String GAME_PREFERENCES_LOGIN = "Login";

Hier InputClassist die Eingabe bzw. OutputClassdie Ausgabeklasse.

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

Jetzt können Sie es woanders verwenden, wie in anderen Klassen. Das Folgende ist 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);
Zly-Zly
quelle
8

In SharedPreferences speichern

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

In SharedPreferences abrufen

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

Hinweis: "temp" ist der Name der gemeinsam genutzten Einstellungen und "name" ist der Eingabewert. Wenn der Wert nicht beendet wird, wird null zurückgegeben

Ravi Parsania
quelle
Sehr gut und einfach zu bedienen. Aber hier ist Context.MODE_PRIVATE nicht getApplicationContext (). MODE_PRIVATE
Maria Gheorghe
7

Bearbeiten

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

Lesen

SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE);
value= pref.getString("yourValue", "");
Faxriddin Abdullayev
quelle
6

Die Grundidee von SharedPreferences besteht darin, Dinge in einer XML-Datei zu speichern.

  1. Deklarieren Sie Ihren XML-Dateipfad. (Wenn Sie diese Datei nicht haben, erstellt Android sie. Wenn Sie diese Datei haben, greift Android darauf zu.)

    SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
  2. Schreiben Sie einen Wert in die freigegebenen Einstellungen

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

    Dies preference_file_keyist der Name der freigegebenen Einstellungsdateien. Und das 1010101ist der Wert, den Sie speichern müssen.

    apply()Endlich sollen die Änderungen gespeichert werden. Wenn Sie eine Fehlermeldung erhalten apply(), ändern Sie diese in commit(). Also dieser alternative Satz ist

    prefs.edit().putLong("preference_file_key", 1010101).commit();
  3. Lesen Sie aus den freigegebenen Einstellungen

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

    lspwird sein, -1wenn preference_file_keyhat keinen Wert. Wenn 'priority_file_key' einen Wert hat, wird der Wert davon zurückgegeben.

Der gesamte Code zum Schreiben ist

    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.

Der Code zum Lesen ist

    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
Kakarott
quelle
Editor.apply () erfordert API-Level 9 oder höher. Darunter verwenden Sie Editor.commit ()
Lennart Rolland
6

Mit dieser Methode können Sie Wert sparen:

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

Mit dieser Methode können Sie Werte aus SharedPreferences abrufen:

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

Hier prefKeyist der Schlüssel, mit dem Sie den bestimmten Wert gespeichert haben. Vielen Dank.

Md. Sajedul Karim
quelle
Was ist mit Booleschen?
Yousha Aleayoub
Speichern Sie mit dieser Zeile: editor.putString (Schlüssel, Wert); Verwenden Sie diese Zeile: Boolean yourLocked = prefs.getBoolean ("gesperrt", false);
Md. Sajedul Karim
6
editor.putString("text", mSaved.getText().toString());

Hier mSavedkann jeder sein TextViewoder EditTextvon wo wir einen String extrahieren können. Sie können einfach eine Zeichenfolge angeben. Hier ist Text der Schlüssel, der den vom mSaved( TextViewoder EditText) erhaltenen Wert enthält .

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

Es ist auch nicht erforderlich, die Voreinstellungsdatei unter dem Paketnamen "com.example.app" zu speichern. Sie können Ihren eigenen bevorzugten Namen angeben. Hoffe das hilft !

Java Dev
quelle
5

Es gibt viele Möglichkeiten, wie SharedPreferences verwendet werden können . Ich habe hier ein Demo-Projekt gemacht . Der wichtigste Punkt im Beispiel ist die Verwendung von ApplicationContext und einem einzelnen gemeinsam genutzten Präferenzobjekt . Dies zeigt, wie SharedPreferences mit folgenden Funktionen verwendet werden: -

  • Verwenden der Singelton-Klasse für den Zugriff auf / die Aktualisierung von SharedPreferences
  • Es ist nicht erforderlich, den Kontext immer zum Lesen / Schreiben von SharedPreferences zu übergeben
  • Es verwendet apply () anstelle von commit ()
  • apply () ist asynchron gespeichert, gibt nichts zurück, aktualisiert zuerst den Wert im Speicher und Änderungen werden später asynchron auf die Festplatte geschrieben.
  • commit () ist synchronus save und gibt basierend auf dem Ergebnis true / false zurück. Änderungen werden synchron auf die Festplatte geschrieben
  • funktioniert auf Android 2.3+ Versionen

Anwendungsbeispiel wie folgt: -

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

Hier erhalten Sie den Quellcode. Detaillierte APIs finden Sie hier auf developer.android.com

Akhil
quelle
Hey, ich habe eine Frage zu gemeinsamen Einstellungen. Stört es Sie, darauf zu antworten? stackoverflow.com/questions/35713822/…
Ruchir Baronia
5

Best Practice aller Zeiten

Erstellen Sie eine mit PreferenceManager benannte Schnittstelle :

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

}

Verwendung mit Aktivität / 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);
    }
}

Hinweis: Ersetzen Sie Ihren Schlüssel von SharedPreference durch SP_TITLE .

Beispiele:

String in Shareperence speichern :

setString("my_key", "my_value");

String von Shareperence abrufen :

String strValue = getString("my_key");

Hoffe das wird dir helfen.

Hiren Patel
quelle
Verwende ich dasselbe gemeinsame Präferenzobjekt, um alles zu speichern, oder erstelle ich neue gemeinsame Präferenzobjekte für jedes einzelne Datenelement?
Ruchir Baronia
@Ruchir Baronia, keine Notwendigkeit, verschiedene Objekte zu erstellen, übrigens, Sie müssen kein Objekt mit gemeinsamen Einstellungen initialisieren. Sie können auf die oben beschriebene Weise speichern. Lassen Sie mich wissen, wenn etwas von meiner Seite benötigt wird.
Hiren Patel
Okay danke. Kannst du mir dabei helfen? stackoverflow.com/questions/35235759/…
Ruchir Baronia
@Ruchir Baronia, du kannst den Thread abbrechen. Hoffe das hilft dir.
Hiren Patel
Oh, es tut mir so leid, ich habe die falsche Frage gestellt. Ich wollte danach fragen, es geht um gemeinsame Einstellungen
Ruchir Baronia
5

So speichern Sie Werte in gemeinsamen Einstellungen:

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

So rufen Sie Werte aus freigegebenen Einstellungen ab:

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

speichern

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

zurückerhalten:

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

Der Standardwert ist: Werte, die zurückgegeben werden sollen, wenn diese Einstellung nicht vorhanden ist.

In einigen Fällen können Sie " dies " mit getActivity () oder getApplicationContext () ändern

Nadir Belhaj
quelle
Hey, ich habe eine Frage zu gemeinsamen Einstellungen. Stört es Sie, darauf zu antworten? stackoverflow.com/questions/35713822/…
Ruchir Baronia
Ja, ich habe ... :)
Ruchir Baronia
3

Ich schreibe eine Hilfsklasse für gemeinsame Einstellungen:

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

}
Mete
quelle
3

Verwenden Sie dieses Beispiel einfach und klar und geprüft

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

}
Sohaib Aslam
quelle
2

Mit dieser einfachen Bibliothek können Sie SharedPreferences folgendermaßen aufrufen.

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
kc ochibili
quelle
2

Ich wollte hier hinzufügen, dass die meisten Snippets für diese Frage bei Verwendung von SharedPreferences so etwas wie MODE_PRIVATE haben. Nun, MODE_PRIVATE bedeutet, dass alles, was Sie in diese gemeinsame Einstellung schreiben, nur von Ihrer Anwendung gelesen werden kann.

Unabhängig davon, welchen Schlüssel Sie an die Methode getSharedPreferences () übergeben, erstellt Android eine Datei mit diesem Namen und speichert die Voreinstellungsdaten darin. Denken Sie auch daran, dass getSharedPreferences () verwendet werden soll, wenn Sie mehrere Einstellungsdateien für Ihre Anwendung haben möchten. Wenn Sie eine einzelne Einstellungsdatei verwenden und alle Schlüssel-Wert-Paare darin speichern möchten, verwenden Sie die Methode getSharedPreference (). Es ist seltsam, warum jeder (einschließlich ich) einfach getSharedPreferences () verwendet, ohne den Unterschied zwischen den beiden oben genannten zu verstehen.

Das folgende Video-Tutorial soll https://www.youtube.com/watch?v=2PcAQ1NBy98 helfen

Sandeep
quelle
2

Einfach und problemlos :: Bibliothek "Android-SharedPreferences-Helper"

Besser spät als nie: Ich habe die Bibliothek "Android-SharedPreferences-Helper" erstellt , um die Komplexität und den Aufwand bei der Verwendung zu verringern SharedPreferences. Es bietet auch einige erweiterte Funktionen. Einige Dinge, die es bietet, sind wie folgt:

  • Einzeilige Initialisierung und Einrichtung
  • Einfache Auswahl, ob Standardeinstellungen oder eine benutzerdefinierte Einstellungsdatei verwendet werden sollen
  • Vordefinierte (Datentyp-Standardeinstellungen) und anpassbare (was Sie auswählen können) Standardwerte für jeden Datentyp
  • Möglichkeit, mit nur einem zusätzlichen Parameter einen anderen Standardwert für die einmalige Verwendung festzulegen
  • Sie können OnSharedPreferenceChangeListener wie für die Standardklasse registrieren und die Registrierung aufheben
dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

Deklaration von SharedPreferencesHelper-Objekt: (empfohlen auf Klassenebene)

SharedPreferencesHelper sph; 

Instanziierung des SharedPreferencesHelper-Objekts: (empfohlen in der onCreate () -Methode)

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

Werte in gemeinsame Einstellungen einfügen

Ziemlich Einfach! Im Gegensatz zur Standardmethode (bei Verwendung der SharedPreferences-Klasse) müssen Sie NICHT aufrufen .edit()und .commit()immer Zeit.

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

Das ist es! Ihre Werte werden in den gemeinsamen Einstellungen gespeichert.

Werte aus gemeinsamen Einstellungen abrufen

Wieder nur ein einfacher Methodenaufruf mit dem Schlüsselnamen.

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

Es hat viele andere erweiterte Funktionen

Überprüfen Sie die Details zu erweiterten Funktionen, Verwendungs- und Installationsanweisungen usw. auf der GitHub-Repository-Seite .

AndroidMechanic - Virales Patel
quelle
Verwende ich dasselbe gemeinsame Präferenzobjekt, um alles zu speichern, oder erstelle ich neue gemeinsame Präferenzobjekte für jedes einzelne Datenelement?
Ruchir Baronia
Sie sollten das gleiche so oft wie möglich verwenden. Das ist der springende Punkt bei der Erstellung dieser Bibliothek.
AndroidMechanic - Viral Patel
Hey, ich habe eine Frage zu gemeinsamen Einstellungen. Stört es Sie, darauf zu antworten? 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.

Sie müssen SharedPreferences in AdapterClass oder einer anderen verwenden. Verwenden Sie dieses Mal einfach diese Erklärung und verwenden Sie den gleichen Arsch wie oben.

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

//here context is your application context

für Zeichenfolge oder booleschen Wert

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

Daten wie oben abrufen

String fetchvalue = prefs.getString("keyword", "");
Boolean fetchvalue = prefs.getBoolean("keyword", "");
Vishal 05
quelle
2

2.für das Speichern in gemeinsam genutzten Einstellungen

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

2. zum Abrufen der gleichen Verwendung

    SharedPreferences prefs = getSharedPreferences("DeviceToken", 
 MODE_PRIVATE);
  String deviceToken = prefs.getString("DeviceTokenkey", null);
Syed Danish Haider
quelle
1

Hier habe ich eine Helper-Klasse erstellt, um Einstellungen in Android zu verwenden.

Dies ist die Hilfsklasse:

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

}

}
Manokar
quelle
1

Globales Speichern und Abrufen globaler Variablen auf funktionale Weise. Stellen Sie zum Testen sicher, dass sich Textview-Elemente auf Ihrer Seite befinden, kommentieren Sie die beiden Zeilen im Code aus und führen Sie sie aus. Kommentieren Sie dann die beiden Zeilen erneut und führen Sie sie aus.
Hier ist die ID der TextView Benutzername und Passwort.

Fügen Sie in jeder Klasse, in der Sie es verwenden möchten, diese beiden Routinen am Ende hinzu. Ich möchte, dass diese Routine globale Routinen sind, weiß aber nicht wie. Das funktioniert.

Die Variablen sind überall verfügbar. Es speichert die Variablen in "MyFile". Sie können es auf Ihre Weise ändern.

Sie nennen es mit

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

Der variable Benutzername wird mit "frans" und das Passwort mit "! 2 # 4%" gefüllt. Auch nach einem Neustart sind sie verfügbar.

und Sie rufen es mit ab

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

unter dem gesamten Code meiner 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","[email protected]");
        //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;
    }

    }

Unten finden Sie die Textansichtselemente

<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" />
frans eilering
quelle
1

Ich habe eine Helferklasse erstellt, um mein Leben einfacher zu machen. Dies ist eine generische Klasse mit vielen Methoden, die häufig in Apps verwendet werden, z. B. Freigegebene Einstellungen, E-Mail-Gültigkeit, Datums- und Uhrzeitformat. Kopieren Sie diese Klasse in Ihren Code und greifen Sie überall auf die Methoden zu.

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

}
Zohaib Hassan
quelle