Android Daten speichern und anzeigen

RezaScript

Bekanntes Mitglied
Hallo,

in meiner MainActivity habe ich zwei Buttons. Wenn ich darauf klicke, erscheint ein Dialog (DialogFragment). Je nach dem auf welchen Button ich drücke, beinhaltet der Dialog ein anderes Fragment.

Ich möchte folgendes:
Im Dialog 1 kann ich etwas eintippen und das, was ich eingetippt habe, soll im Dialog 2 angezeigt werden, und zwar nicht temporär, sondern auf Dauer ... also auch wenn ich die App beende und sie wieder neu starte.

Was ist hier der einfachste Weg wie ich vorangehen könnte?
 
K

kneitzel

Gast
Da wäre der Anlaufpunkt wohl https://developer.android.com/training/data-storage

Dort wird erläutert, was für Möglichkeiten du direkt hast. Ist halt immer die Frage, wer ggf. noch auf die Daten zugreifen können soll...

So das nur für Deine App ist, dann wäre https://developer.android.com/training/data-storage/app-specific das, was Du Dir anschauen solltest.

Und dann geht es z.B. einfach so:
Java:
String filename = "myfile";
String fileContents = "Hello world!";
try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE)) {
    fos.write(fileContents.toByteArray());
}

Und das Lesen:
Java:
FileInputStream fis = context.openFileInput(filename);
InputStreamReader inputStreamReader =
        new InputStreamReader(fis, StandardCharsets.UTF_8);
StringBuilder stringBuilder = new StringBuilder();
try (BufferedReader reader = new BufferedReader(inputStreamReader)) {
    String line = reader.readLine();
    while (line != null) {
        stringBuilder.append(line).append('\n');
        line = reader.readLine();
    }
} catch (IOException e) {
    // Error occurred when opening raw file for reading.
} finally {
    String contents = stringBuilder.toString();
}

(Beispiele einfach von der genannten Webseite kopiert!)
 

Jw456

Top Contributor
Wenn du etwas speichern willst also Zb Einstellungen . Solltest du dir mal SharedPreferences anschauen .
Ich denke das ist das was du suchst.


Klar kann man es auch selbert in einer normalen Datei speichen.
 

RezaScript

Bekanntes Mitglied
@Jw456 ja, SharedPrefences scheint schon das zu sein wonach ich suche. Das Problem dabei ist aber, dass ich pro Key nur einen Wert speichern kann. Ich habe 1 Textfeld und egal was der User hier drin eintippt, möchte ich das alles gespeichert wird, damit ich diese Begriffe dann in einem View auflisten kann.

Also nach meinem Verständnis müsste ich so vorgehen:
  • Leere ArrayList erstellen
  • Bereits gespeicherte Daten (als String) abrufen und in ArrayList speichern
  • Der Wert vom Textfeld in der ArrayList hinzufügen
  • Die ArrayList in String umwandeln und in Shared Prefences speichern
So, das wäre der Speicherprozess. Wenn ich den Wert aber lese, habe ich aber immer noch einen String. Ich brauche aber eine Liste. Ich denke in meinem Fall ist Gson das Schlüsselwort, ich verstehe die Logik dahinter aber nicht wie ich vorgehen sollte. Wäre froh, wenn mich jemand hier etwas aufklären würde.
 

RezaScript

Bekanntes Mitglied
@Jw456 danke, das ist ein gutes Beispiel und sieht so ziemlich ähnlich aus wie das, was ich bereits habe, nämlich:

Java:
SharedPreferences sharedPreferences = getActivity().getSharedPreferences("prefs", Context.MODE_PRIVATE);
@SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(arrayItems);
editor.putString("k-text", json);
editor.apply();
String oldData = sharedPreferences.getString("k-text", null);

Im Tutorial steht aber nicht wie das Array entsteht und in meinem Fall ist das Array auch leer, deshalb wundert es mich auch nicht, warum nichts gespeichert wird.

Ich muss also vorerst Daten, welche bereits gespeichert sind abrufen. oldData sollte also einen String liefern und der Wert des Textfelds ist auch nur ein String. Ich habe also ins gesamt 2 Strings und kein Array. Ich könnte beide Strings zwar schon in einer ArrayList abspeichern aber das Problem ist das erste String (also oldData), denn darin sind ja mehrere Einträge gespeichert. Also wenn, dann müsste ich aus dem ersten String ein Array machen und den zweiten String dann zu diesem Array hinzufügen. Oder verstehe ich da etwas falsch?
 

Jw456

Top Contributor
Der Code aus dem Link benutzt auch eine dynamische Liste (ArrayList) vom Type Objekt die in die Shprefs gespeichert werden. Entweder du baust einen App Code um auf eine Liste und nicht Array.
Oder du baust das speichern um auf Array um.

In den Link sind es auch zwei Methoden eine zum lesen und eine zum speichern.

Natürlich solltest du erst mal etwas speichern das heißt auch erst mal etwas in dein Array oder Liste eintragen bevor du die speichern Methode aufrufst.
auch solltest du erst lesen wenn du vorher etwas gespeichert hast.
Das solltest du in deinem Code abfangen.


Hier ein einfaches Beispiel was den Code aus dem Link benutz eine ArrayListe erstellt mit Daten füllt und speichert und wider liest.

Java:
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    public ArrayList<String> myListe;

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

        Button bt = findViewById(R.id.button);
        TextView tv = findViewById(R.id.text);

        myListe = readFromSharedPreferences(this);

        if (myListe == null) {
            myListe = new ArrayList<>();
        }
        tv.setText(myListe.toString());

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myListe.add("Hund");
                myListe.add("Katze");
                myListe.add("Maus");
                writeToSharedPreferences(MainActivity.this, myListe);

                tv.setText(myListe.toString());
            }
        });
    }


    public boolean writeToSharedPreferences(Context context, ArrayList<String> arrayList) {
        String file = "arraylist";
        SharedPreferences mPrefs = context.getSharedPreferences(file, Context.MODE_PRIVATE);
        SharedPreferences.Editor prefsEditor = mPrefs.edit();
        Gson gson = new Gson();
        String json = gson.toJson(arrayList);
        prefsEditor.putString("arraylist", json);
        prefsEditor.commit();
        return true;
    }


    public ArrayList<String> readFromSharedPreferences(Context context) {
        String file = "arraylist";
        SharedPreferences mPrefs = context.getSharedPreferences(file, Context.MODE_PRIVATE);
        Gson gson = new Gson();
        String json = mPrefs.getString("arraylist", "");
        Type type = new TypeToken<List<String>>() {
        }.getType();
        ArrayList<String> arrayList = gson.fromJson(json, type);
        return arrayList;
    }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Firebase RealtimeDatabase - Daten aus Queries in CSV File speichern Android & Cross-Platform Mobile Apps 1
P Daten bzw Objekte auf das Handy lokal speichern Android & Cross-Platform Mobile Apps 29
G Android Daten in einer Datenbank speichern Android & Cross-Platform Mobile Apps 1
A Android Daten in der Cloud speichern (Google) Android & Cross-Platform Mobile Apps 1
U Android Daten dauerhaft speichern? Android & Cross-Platform Mobile Apps 2
P Java ME benutzer daten speichern Android & Cross-Platform Mobile Apps 5
O eingehende Daten speichern Android & Cross-Platform Mobile Apps 2
N XY-Plottet keine Daten obwohl Funktion ausgeführt wird Android & Cross-Platform Mobile Apps 4
N XY-Plot plottet keine Daten Android & Cross-Platform Mobile Apps 0
W Background Service Daten verarbeiten/Schleife ect. Android & Cross-Platform Mobile Apps 1
MiMa Daten vom Brustgurt bekommen? Android & Cross-Platform Mobile Apps 3
ruutaiokwu Android Daten von "Activity A" nach "Activity B" umleiten? Android & Cross-Platform Mobile Apps 13
W Android Browser startet immer, bevor die Daten dafür geholt wurden Android & Cross-Platform Mobile Apps 15
J Android Server-Login Daten in der App sicherer hinterlegen? Android & Cross-Platform Mobile Apps 7
T Firestore Daten in Spinner Android & Cross-Platform Mobile Apps 0
L Android Daten von Webseite runterladen, die mit HTTP-Authentifizierung gesichert ist Android & Cross-Platform Mobile Apps 5
B Accelerometer daten umwandeln Android & Cross-Platform Mobile Apps 41
S Android Apk Daten auslesen Android & Cross-Platform Mobile Apps 6
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
S Android Studio MySql Daten in Listview mit sub Item Android & Cross-Platform Mobile Apps 11
K Unbekannte Menge von Daten (Strings oder Ints) an Activity übergeben Android & Cross-Platform Mobile Apps 0
K Android SQLite Query "WHERE _id in (X, Y, Z)" keine Daten Android & Cross-Platform Mobile Apps 6
M Anzeigen der Daten dauert zu lange - Progressdialog? Android & Cross-Platform Mobile Apps 5
K Android DialogFragment mit SimpleCursorAdapter: Auf Daten zugreifen? Android & Cross-Platform Mobile Apps 4
S Daten aus Android Gerät auslesen Android & Cross-Platform Mobile Apps 3
L Android Datei erstellen, Daten einspeichern und auslesen Android & Cross-Platform Mobile Apps 2
B Alle Daten gehen verloren, wenn die Displaysperre aktiviert wird? Android & Cross-Platform Mobile Apps 21
M Daten zwischen mehreren Activities Android & Cross-Platform Mobile Apps 2
M Daten zwischen Activities übergeben Android & Cross-Platform Mobile Apps 7
G Daten von einer Activity zur nächsten übergeben Android & Cross-Platform Mobile Apps 6
G Wie gebe ich dem DrawView die Daten mit? Android & Cross-Platform Mobile Apps 2
V App Daten in Java Applikation Android & Cross-Platform Mobile Apps 3
D Android Daten verwalten Android & Cross-Platform Mobile Apps 2
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
M Android Von Smartphone auf Daten von Server zugreifen Android & Cross-Platform Mobile Apps 2
C Android Listen/Daten aus der SQLLite Datenbank darstellen Android & Cross-Platform Mobile Apps 2
L Android Einlesen und rausschreiben von Daten auf SD Android & Cross-Platform Mobile Apps 3
7 GPS-Daten auslesen auf Samsung SGH I900 Omnia Android & Cross-Platform Mobile Apps 3
X RMS - Will die Daten auf den PC kopieren Android & Cross-Platform Mobile Apps 3
B Daten in *.txt schreiben Android & Cross-Platform Mobile Apps 7
R Lesen und schreiben von Daten. Android & Cross-Platform Mobile Apps 2
K XDA Orbit: Auslesen der GPS Daten mit J2ME Android & Cross-Platform Mobile Apps 2
M Daten aus Jad-file auslesen Android & Cross-Platform Mobile Apps 2
W Foto machen und es direkt per URI speichern und auswählen Android & Cross-Platform Mobile Apps 4
I Android CameraApp, eingebaute App nutzen und Ergebniss als Datei speichern Android & Cross-Platform Mobile Apps 0
T Screenshot speichern ohne alte Datei überschreiben Android & Cross-Platform Mobile Apps 3
P Objekt mit Shared preferences speichern Android & Cross-Platform Mobile Apps 0
J Download und speichern mit jsch klappt nicht Android & Cross-Platform Mobile Apps 5
L Android SQLite Datenbank auf SDCard speichern Android & Cross-Platform Mobile Apps 5
M Android App → Problem mit dem Speichern von einem Bitmap–Objekt. Android & Cross-Platform Mobile Apps 1
V Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android & Cross-Platform Mobile Apps 2
B Dateien Speichern Android & Cross-Platform Mobile Apps 6
V Bytes (Wertebereich 0-255) über BLE empfangen,lesen und speichern Android & Cross-Platform Mobile Apps 1
JavaWolf165 Android Fehler beim Speichern/Downloaden einer Datei Android & Cross-Platform Mobile Apps 2
Anfänger2011 Speichern von bereits gefüllten Dateien Android & Cross-Platform Mobile Apps 8
M Android Speichern einer .txt Datei im InternalStorage Android & Cross-Platform Mobile Apps 2
B Fragen zum Speichern einer Datei auf dem Gerät? Android & Cross-Platform Mobile Apps 7
G Speichern jede zehnte sekunde Android & Cross-Platform Mobile Apps 1
G Sensordaten speichern Android & Cross-Platform Mobile Apps 3
S Dynamische EditText View eingaben in Datenbank speichern Android & Cross-Platform Mobile Apps 0
L Android Apache POI: Datei speichern geht nicht Android & Cross-Platform Mobile Apps 1
Streeber Android ExpandableListView Child-Auswahl speichern Android & Cross-Platform Mobile Apps 3
S Android Geschossenes Foto in anderem Ordner speichern Android & Cross-Platform Mobile Apps 11
G Wissen frage - wo am besten Speichern. Android & Cross-Platform Mobile Apps 1
S Android Speichern von Informationen in Code oder extern Android & Cross-Platform Mobile Apps 0
E Android Zeichnen auf Canvas - Teilbereich als Bild speichern Android & Cross-Platform Mobile Apps 3
L Android Text aus Textfeld speichern Android & Cross-Platform Mobile Apps 5
R Android Objekt in bestimmten Pfad auf Android-gerät speichern Android & Cross-Platform Mobile Apps 8
G Datei im Ordner speichern Android & Cross-Platform Mobile Apps 2
P Android Fragen reihenfolge speichern / laden Android & Cross-Platform Mobile Apps 2
T Bild speichern Servlet Android & Cross-Platform Mobile Apps 2
B Inhalt von StringBuffer in Textdatei speichern? Android & Cross-Platform Mobile Apps 6
W Bilder und Videos anzeigen lassen mit Zoom- und Loop-Funktion Android & Cross-Platform Mobile Apps 5
W Android Kann keine ListView mehr in der MainActivtiy anzeigen, obwohl noch sehr viel Platz frei ist Android & Cross-Platform Mobile Apps 1
ruutaiokwu Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
J ImageView: Bilder in niedriger Grafik anzeigen lassen Android & Cross-Platform Mobile Apps 2
M ImageButton: Bild ausblenden und Text anzeigen Android & Cross-Platform Mobile Apps 2
E Android Naturkatastrophen auf App anzeigen Android & Cross-Platform Mobile Apps 1
L Dialog anzeigen wenn auf Button gedrückt wird. Android & Cross-Platform Mobile Apps 4
C Android Bei Text "Popup" anzeigen Android & Cross-Platform Mobile Apps 2
B Android App debugen auf Handy, Handy-Desktop auf PC anzeigen Android & Cross-Platform Mobile Apps 1
J (Android) Bild(er) anzeigen lassen Android & Cross-Platform Mobile Apps 0
B Android In einem View der ersten Activity zweite anzeigen Android & Cross-Platform Mobile Apps 2
V PopUp in gleicher View anzeigen Android & Cross-Platform Mobile Apps 1
J Verschiedene xml layouts in relativlayout anzeigen lassen Android & Cross-Platform Mobile Apps 1
P Android Kontakt anzeigen lassen Android & Cross-Platform Mobile Apps 1
E Android Zwei Canvase übereinander legen und anzeigen Android & Cross-Platform Mobile Apps 7
G canvas in view anzeigen Android & Cross-Platform Mobile Apps 10
G Bilder als "Video" anzeigen Android & Cross-Platform Mobile Apps 3
S Android Fehler beim Anzeigen meines Apps auf Galaxy Tab Android & Cross-Platform Mobile Apps 4
J Schlicht und einfach Bild anzeigen ;) Android & Cross-Platform Mobile Apps 5
L HTML Seite anzeigen in Handy-Applikation Android & Cross-Platform Mobile Apps 5
P Bild anzeigen Android & Cross-Platform Mobile Apps 3
M Bilder nacheinander anzeigen Android & Cross-Platform Mobile Apps 6

Ähnliche Java Themen

Neue Themen


Oben