codestory

Die Anleitung zu Android SharedPreferences

  1. Was ist SharedPreferences?
  2. Das Beispiel mit SharedPreferences
  3. Anhang: Interface design

1. Was ist SharedPreferences?

Sehen Sie eine Situation um SharedPreferences zu kennen:

Sie spielen gerade ein Game auf Android. Vor dem Game-spielen wählen Sie die Parameter der Game, zum Beispiel die Helligkeit des Games, die Volume und die Schwierigkeit. Nach dem Spielen schließen Sie das Game und können das Game weiter spielen.SharedPreferences genehmigt Ihnen bei der Speicherung der von Ihnen gebildeteten Parameter, damit Sie bei dem weiteren Spielen von der vorherigen Parameter nicht wieder einstellen .
SharedPreferences speichert die Raw-Daten in der Form von dem Schlüssel und Wert (key-value) in der Datei der Applikation. Sie können ein der privaten Speicherungsmodus wählen, die die anderen Applikation in dieser Datei nicht zugreifen. Deshalb ist sie sicher .

2. Das Beispiel mit SharedPreferences

Schauen Sie das Bild der Applikationsinterface vor
Erstellen Sie ein Projekt mit dem Name von AndroidSharedPreferences:
  • File > New > New Project > Empty Activity
    • Name: AndroidSharedPreferences
    • Package name: org.o7planning.androidsharedpreferences
    • Language: Java
Wenn Sie sich für die Design-Schritten der Anwendungsinterface interessieren, sehen Sie bitte den Anhang am Ende vom Artikel
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="37dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Game Settings"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="24dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="22dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Sound:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <SeekBar
        android:id="@+id/seekBar_sound"
        android:layout_width="0dp"
        android:layout_height="24dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="25dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="22dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="19dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Bightness:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/seekBar_sound" />

    <SeekBar
        android:id="@+id/seekBar_brightness"
        android:layout_width="0dp"
        android:layout_height="22dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="31dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="27dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="29dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Difficulty Level:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/seekBar_brightness" />

    <RadioGroup
        android:id="@+id/radioGroup_diffLevel"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="37dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4">

        <RadioButton
            android:id="@+id/radioButton_easy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Easy" />

        <RadioButton
            android:id="@+id/radioButton_medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Medium" />

        <RadioButton
            android:id="@+id/radioButton_hard"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hard" />
    </RadioGroup>

    <Button
        android:id="@+id/button_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="33dp"
        android:text="Save"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/radioGroup_diffLevel" />

</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.androidsharedpreferences;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {


    private SeekBar seekBarSound ;
    private SeekBar seekBarBrightness;

    private RadioGroup radioGroupDiffLevel;
    private RadioButton radioButtonEasy;
    private RadioButton radioButtonMedium;
    private RadioButton radioButtonHard;

    private Button buttonSave;

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

        this.seekBarBrightness= (SeekBar)this.findViewById(R.id.seekBar_brightness);
        this.seekBarSound= (SeekBar)this.findViewById(R.id.seekBar_sound);

        this.seekBarBrightness.setMax(100);
        this.seekBarSound.setMax(100);

        this.radioGroupDiffLevel= (RadioGroup) this.findViewById(R.id.radioGroup_diffLevel);
        this.radioButtonEasy=(RadioButton) this.findViewById(R.id.radioButton_easy);

        this.radioButtonMedium = (RadioButton)this.findViewById(R.id.radioButton_medium);
        this.radioButtonHard=(RadioButton) this.findViewById(R.id.radioButton_hard);

        this.buttonSave = (Button) this.findViewById(R.id.button_save);

        this.buttonSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity.this.doSave(view);
            }
        });

        // Load saved game setting.
        this.loadGameSetting();
    }


    private void loadGameSetting()  {
        SharedPreferences sharedPreferences= this.getSharedPreferences("gameSetting", Context.MODE_PRIVATE);

        if(sharedPreferences!= null) {

            int brightness = sharedPreferences.getInt("brightness", 90);
            int sound = sharedPreferences.getInt("sound",95);
            int checkedRadioButtonId = sharedPreferences.getInt("checkedRadioButtonId", R.id.radioButton_medium);

            this.seekBarSound.setProgress(sound);
            this.seekBarBrightness.setProgress(brightness);
            this.radioGroupDiffLevel.check(checkedRadioButtonId);

        } else {
            this.radioGroupDiffLevel.check(R.id.radioButton_medium);
            Toast.makeText(this,"Use the default game setting",Toast.LENGTH_LONG).show();
        }

    }

    // Called when user click to Save button.
    public void doSave(View view)  {
        // The created file can only be accessed by the calling application
        // (or all applications sharing the same user ID).
        SharedPreferences sharedPreferences= this.getSharedPreferences("gameSetting", Context.MODE_PRIVATE);

        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putInt("brightness", this.seekBarBrightness.getProgress());
        editor.putInt("sound", this.seekBarSound.getProgress());

        // Checked RadioButton ID.
        int checkedRadioButtonId = radioGroupDiffLevel.getCheckedRadioButtonId();

        editor.putInt("checkedRadioButtonId", checkedRadioButtonId);

        // Save.
        editor.apply();

        Toast.makeText(this,"Game Setting saved!",Toast.LENGTH_LONG).show();
    }
}
Nach der Speicherung können Sie die Applikation schließen und wieder sie öffnen. Die Parameter, die von Ihnen gespeichert werden, werden automatisch für das Game gesetzt

3. Anhang: Interface design

TextView, SeekBar in die Interface hìnfügen.
RadioGroup und RadioButton in die Interface hinfügen.
Einen Button in die Interface hinfügen:
ID, Text für die Komponenten auf die Interface festlegen:

Anleitungen Android

Show More