Android - Gemeinsame Einstellungen
Android bietet viele Möglichkeiten zum Speichern von Daten einer Anwendung. Eine dieser Möglichkeiten heißt Shared Preferences. Mit den freigegebenen Einstellungen können Sie Daten in Form eines Schlüssel-Wert-Paares speichern und abrufen.
Um gemeinsam genutzte Einstellungen zu verwenden, müssen Sie eine Methode getSharedPreferences () aufrufen, die eine SharedPreference-Instanz zurückgibt, die auf die Datei verweist, die die Werte der Einstellungen enthält.
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
Der erste Parameter ist der Schlüssel und der zweite Parameter ist der MODE. Neben privat gibt es noch andere Modi, die unten aufgeführt sind -
Sr.Nr. | Modus & Beschreibung |
---|---|
1 | MODE_APPEND Dadurch werden die neuen Einstellungen an die bereits vorhandenen Einstellungen angehängt |
2 | MODE_ENABLE_WRITE_AHEAD_LOGGING Datenbank offenes Flag. Wenn es festgelegt ist, wird standardmäßig die Vorausschreibprotokollierung aktiviert |
3 | MODE_MULTI_PROCESS Diese Methode prüft, ob Einstellungen geändert wurden, auch wenn die gemeinsam genutzte Präferenzinstanz bereits geladen wurde |
4 | MODE_PRIVATE Durch Einstellen dieses Modus kann nur mit der aufrufenden Anwendung auf die Datei zugegriffen werden |
5 | MODE_WORLD_READABLE In diesem Modus können andere Anwendungen die Einstellungen lesen |
6 | MODE_WORLD_WRITEABLE In diesem Modus können andere Anwendungen die Einstellungen schreiben |
Sie können etwas in den freigegebenen Einstellungen speichern, indem Sie die SharedPreferences.Editor-Klasse verwenden. Sie rufen die Bearbeitungsmethode der SharedPreference-Instanz auf und erhalten sie in einem Editorobjekt. Seine Syntax ist -
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();
Neben der putString-Methode stehen in der Editor-Klasse Methoden zur Verfügung, mit denen Daten in gemeinsam genutzten Einstellungen bearbeitet werden können. Sie sind wie folgt aufgeführt:
Sr. NO | Modus & Beschreibung |
---|---|
1 | apply() Es ist eine abstrakte Methode. Ihre Änderungen werden vom Editor zurück in das von Ihnen aufgerufene sharedPreference-Objekt übernommen |
2 | clear() Es werden alle Werte aus dem Editor entfernt |
3 | remove(String key) Der Wert, dessen Schlüssel als Parameter übergeben wurde, wird entfernt |
4 | putLong(String key, long value) Es wird ein langer Wert in einem Voreinstellungseditor gespeichert |
5 | putInt(String key, int value) Es wird ein ganzzahliger Wert in einem Voreinstellungseditor gespeichert |
6 | putFloat(String key, float value) Es wird ein Gleitkommawert in einem Voreinstellungseditor gespeichert |
Beispiel
Dieses Beispiel zeigt die Verwendung der freigegebenen Einstellungen. Es wird ein Bildschirm mit einigen Textfeldern angezeigt, deren Wert beim Schließen der Anwendung gespeichert und beim erneuten Öffnen wieder angezeigt wird.
Um mit diesem Beispiel zu experimentieren, müssen Sie dies auf einem tatsächlichen Gerät ausführen, nachdem Sie die Anwendung gemäß den folgenden Schritten entwickelt haben:
Schritte | Beschreibung |
---|---|
1 | Sie werden Android Studio verwenden, um eine Android-Anwendung unter einem Paket com.example.sairamkrishna.myapplication zu erstellen. |
2 | Ändern Sie die Datei src / MainActivity.java, um einen Fortschrittscode hinzuzufügen und den Dialog über den sich drehenden Fortschritt anzuzeigen. |
3 | Ändern Sie die Datei res / layout / activity_main.xml, um den entsprechenden XML-Code hinzuzufügen. |
4 | Führen Sie die Anwendung aus und wählen Sie ein laufendes Android-Gerät aus. Installieren Sie die Anwendung darauf und überprüfen Sie die Ergebnisse. |
Es folgt der Inhalt der geänderten MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
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();
}
});
}
}
Es folgt der Inhalt der geänderten Hauptaktivitätsdateires/layout/activiy_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Shared Preference "
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="35dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="35dp"
android:textColor="#ff16ff01" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/textView2"
android:layout_marginTop="67dp"
android:hint="Name"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Pass" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Email" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save"
android:id="@+id/button"
android:layout_below="@+id/editText3"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp" />
</RelativeLayout>
Es folgt der Inhalt des geänderten Inhalts der Datei res/values/strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Es folgt die Standarddatei für den Inhalt AndroidManifest.xml.
<?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>
Versuchen wir, Ihre Anwendung auszuführen. Ich gehe davon aus, dass Sie Ihr aktuelles Android Mobile-Gerät mit Ihrem Computer verbunden haben. Um die App von Android Studio aus auszuführen, öffnen Sie eine der Aktivitätsdateien Ihres Projekts und klicken Sie in
Wählen Sie Ihr Mobilgerät als Option aus und überprüfen Sie Ihr Mobilgerät, das den folgenden Bildschirm anzeigt:
Geben Sie jetzt einfach einen Text in das Feld ein. Als würde ich einen zufälligen Namen und andere Informationen eingeben und auf die Schaltfläche Speichern klicken.
Wenn Sie nun auf die Schaltfläche Speichern klicken, wird der Text in den freigegebenen Einstellungen gespeichert. Drücken Sie nun die Zurück-Taste und beenden Sie die Anwendung. Öffnen Sie es jetzt erneut und Sie sehen den gesamten Text, den Sie in Ihrer Bewerbung zurückgeschrieben haben.