Daten von einer Activity zur nächsten übergeben

G

Gast2

Gast
Hallo,

Ich habe eine App mit gewissen Voreinstellungen, z.B.
Java:
int alpha 12;
Von jeder einzelnen Activity kann man ein Menü aufrufen und diesen Wert verstellen (mittels SeekBar).
Von jeder Activity muss auf diesen Wert zugegriffen werden können.

Nun, wie übergibt man günstig diese Werte am geschmeidigsten?

z.B.
  • Intent
  • extra Klasse mit getter und setter
  • oder ?

Zu bedenken ist auch, dass ich gelegentlich die StartActivity aufrufen muss. Darin habe ich die Voreinstellungen gesetzt. Beim wiederholten Aufruf sollen sie aber nicht neu gesetzt werden wie nach dem Start der App, sondern die geänderten Werte sollen gelten.

Frank
 

Sen

Mitglied
Ich würde eine Klasse für statische Werte erstellen und diese Variable dort erstellen. Dann kannst von von jeder anderen Klasse darauf zugreifen.
 

schlingel

Gesperrter Benutzer
Vergiss die statische Klasse. So wie du das beschreibst, hört sich das nach Einstellungen an. Und das schöne von Einstellungen in Android ist, dass sie so leicht zu programmieren sind.

Erstell dir eine Klasse, die deine Properties besitzt und sie standardmäßig auf deine Default-Values setzt. Und dann lass diese Klasse jedes Mal im onResume oder onCreate deiner Activities die Werte aus den Preferences auslesen.
 

schlingel

Gesperrter Benutzer
Sen hat gesagt.:
Was spricht eigentlich gegen static? ^^
Da hat man mal aus der "Theorie" das Problem, dass solche Objekte - ähnlich wie Singletons - eine enge Kopplung bewirken und dass dies schnell nervig werden kann wenn man die App ausbauen muss.

Zudem sich praktisch die Frage stellt, ob das so klug ist bei einem System dass dir - wenn es die Resourcen benötigt - einfach die App abdrehen kann und sie für dich neu startet wenn du zu einer deiner Activities zurück kommst. Denn in so einem Fall wären wieder die Standardwerte anstatt der eingestellten Werte eingestellt. Das ist erstens nervig für den Benutzer und zweitens für dich nicht anders lösbar.

Mit einer eigenen Klasse die auf die SharedPreferences zugreift, hättest du den Vorteil, dass so die Einstellungen auch über eine Sitzung hinweg vorhanden sind. Schwer zu programmieren ist das auch nicht. Z.B.: für eine kleine RSS-Reader App habe ich so eine Klasse geschrieben, die sieht so aus:
Java:
package at.fundev.android.soupchecker.utils;

import android.R;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.preference.PreferenceManager;

/**
 * Helper class. Abstraction for fetching and storing credentials.
 */
public final class CredsHelper {
	private static final String SOUP_DEF_URL = "http://www.soup.io/";

	private static final String CREDS_URL_NAME = "credRSSUrl";

	private static final String CREDS_FETCH_IMAGES = "credFetchImages";

	private static final String CREDS_DISPLAY_HEADER = "credDisplayUserHeader";

	private static final boolean DEF_FETCH_IMAGES_VALUE = true;

	private static final boolean DEF_CREDS_DISPLAY_HEADER_VALUE = true;

	private static String soupUrl = "";

	private static Boolean fetchImages = null;

	private static Boolean displayHeader = null;

	/**
	 * The activity context. Needed for fetching the preferences.
	 */
	private Context cont;

	/**
	 * Preferences object for fetching/storing credentials.
	 */
	private SharedPreferences prefs;

	/**
	 * Initializes the creds helper with the given context.
	 * @param cont Activity context
	 */
	public CredsHelper(Context cont) {
		this.cont = cont;
		prefs = PreferenceManager.getDefaultSharedPreferences(cont);
		fetchPreferences();
	}

	/**
	 * Fetches the credentials from the preferences and writes it to the member variable.
	 */
	private void fetchPreferences() {
			soupUrl = prefs.getString(CREDS_URL_NAME, SOUP_DEF_URL);
			fetchImages = prefs.getBoolean(CREDS_FETCH_IMAGES, DEF_FETCH_IMAGES_VALUE);
			displayHeader = prefs.getBoolean(CREDS_DISPLAY_HEADER, DEF_CREDS_DISPLAY_HEADER_VALUE);
	}

	/**
	 * Returns the soup url.
	 */
	public String getURL() {
			return soupUrl;
	}

	/**
	 * Writes the given url to the preferences.
	 */
	public void setUrl(String url) {
			soupUrl = url;

			SharedPreferences.Editor editor = prefs.edit();
			editor.putString(CREDS_URL_NAME, url);
			editor.commit();
	}

	/**
	 * If true a non default value is set.
	 * @return True if user set the URL, false otherwise
	 */
	public boolean isSoupUrlSet() {
		String value = getURL();
		return value != null && !SOUP_DEF_URL.equals(value);
	}

	/**
	 * Sets the fetch images value. Needed to determine wether the soup user images should 
	 * be loaded or not.
	 * @param fetchImages
	 */
	public void setFetchImagesActive(boolean fetchImages) {
		this.fetchImages = fetchImages;

		SharedPreferences.Editor editor = prefs.edit();
		editor.putBoolean(CREDS_FETCH_IMAGES, fetchImages);
		editor.commit();
	}

	/**
	 * Returns a boolean value wether the user images should be downloaded from soup or not.
	 * @return
	 */
	public boolean isFetchImagesActive() {
		return fetchImages;
	}

	/** Checks wether the header should be displayed or not. */
	public boolean isHeaderDisplayActive() {
		return displayHeader;
	}

	/** Sets the value wether the header should be displayed or not. */
	public void setHeaderDisplayActive(boolean value) {
		displayHeader = value;

		SharedPreferences.Editor editor = prefs.edit();
		editor.putBoolean(CREDS_DISPLAY_HEADER, value);
		editor.commit();
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Android Daten in einer Datenbank speichern Android & Cross-Platform Mobile Apps 1
M Firebase RealtimeDatabase - Daten aus Queries in CSV File speichern Android & Cross-Platform Mobile Apps 1
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
R Android Daten speichern und anzeigen Android & Cross-Platform Mobile Apps 7
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
P Daten bzw Objekte auf das Handy lokal speichern Android & Cross-Platform Mobile Apps 29
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
A Android Daten in der Cloud speichern (Google) Android & Cross-Platform Mobile Apps 1
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 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
U Android Daten dauerhaft speichern? Android & Cross-Platform Mobile Apps 2
P Java ME benutzer daten speichern Android & Cross-Platform Mobile Apps 5
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
O eingehende Daten speichern Android & Cross-Platform Mobile Apps 2
T Lesen / Schreiben einer Textdatei - SD-Karte Android & Cross-Platform Mobile Apps 42
OnDemand Allgemeine Fragen zu einer App Android & Cross-Platform Mobile Apps 4
I Foto mit einer bestimmten Auflösung aufnehmen und als Datei ablegen. Android & Cross-Platform Mobile Apps 5
Jose05 Wie kann man mit einer App Geld verdienen? Android & Cross-Platform Mobile Apps 6
T Android Studio: Einen Button in einer For Schleife verwenden Android & Cross-Platform Mobile Apps 2
M Activity einer anderen App mit result Android & Cross-Platform Mobile Apps 2
J Android Zugriff auf eine Datei, diese von einer anderen App erstellt wurde? Android & Cross-Platform Mobile Apps 11
Mo1234 Plattform in einer App. Bitte um Hilfe! Android & Cross-Platform Mobile Apps 8
A Mit Java neues item in ein string-array einer Strings.xml schreiben Android & Cross-Platform Mobile Apps 4
P Android Wie bestimme ich den Dateinamen einer Bilddatei? Android & Cross-Platform Mobile Apps 11
B Falsche ausgabe einer Rechnung! Android & Cross-Platform Mobile Apps 8
M Android Dynamische SchriftGröße einer TextView Android & Cross-Platform Mobile Apps 3
J Android Suche in einer ListView Android & Cross-Platform Mobile Apps 3
J Android button mithilfe einer Methode automatisch erstellen Android & Cross-Platform Mobile Apps 6
JavaWolf165 Android Fehler beim Speichern/Downloaden einer Datei Android & Cross-Platform Mobile Apps 2
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
B Android wie kann ich in einer xml nach bestimme item suchen (DOM) Android & Cross-Platform Mobile Apps 7
C Android Diese Art von Werbung in einer App? Android & Cross-Platform Mobile Apps 1
? ständig ändernden Inhalten in einer App Android & Cross-Platform Mobile Apps 2
R Android Eine Website-frame in einer App Android & Cross-Platform Mobile Apps 4
H Android Aufrufen von "setContentView" in einer anderen Klasse Android & Cross-Platform Mobile Apps 3
S Die Erstellung einer eigenen App,Kosten? Android & Cross-Platform Mobile Apps 1
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
C Auf Play Store verlinken - Code in einer Extraklasse Android & Cross-Platform Mobile Apps 1
G Thread in einer Service erstellen Android & Cross-Platform Mobile Apps 0
B Android Spieler Steuerung auf einer Map mit Berge? Android & Cross-Platform Mobile Apps 7
M Android Quellcode einer Website Android & Cross-Platform Mobile Apps 7
K Löschen einer Tabelle bei PlayStore update Android & Cross-Platform Mobile Apps 2
H Veröffentlichung einer Bezahl-App Android & Cross-Platform Mobile Apps 5
Robat Android ConcurrentModificationException während einer for Schleife Android & Cross-Platform Mobile Apps 15
D Android EditText und TextView haben unterschiedliche größen innerhalb einer TableRow Android & Cross-Platform Mobile Apps 18
M Umlaute im Quellcode einer Website richtig darstellen Android & Cross-Platform Mobile Apps 4
M Quellcode einer Website auslesen Android & Cross-Platform Mobile Apps 5
T Android platzsparende Codierung verschlüsselter Texte in einer URI Android & Cross-Platform Mobile Apps 8
S Android "Weiches wechseln" zwischen Views in einer Activity Android & Cross-Platform Mobile Apps 3
F Bei einer Android Java App, Objekte erstellen Android & Cross-Platform Mobile Apps 2
G eine Methode einer anderen Activity aufrufen Android & Cross-Platform Mobile Apps 9
G Einbinden einer Bibliothek's App Android & Cross-Platform Mobile Apps 2
A Fehler beim Starten eines Intents - alles in einer Klasse funktioniert... Android & Cross-Platform Mobile Apps 4
A Kann nicht in TextView einer anderen Klasse schreiben - wieso? Android & Cross-Platform Mobile Apps 9
A Beenden einer 2ten Activity Android & Cross-Platform Mobile Apps 3
T Android Multiple SDK-Support in einer Apk Android & Cross-Platform Mobile Apps 5
R Android Unterschiedliche Versionen von Android in einer App Android & Cross-Platform Mobile Apps 7
D Mehrere Kopien von einer Form Android & Cross-Platform Mobile Apps 7
M Wie in einer anderen "nicht canvas" klasse zeichne Android & Cross-Platform Mobile Apps 5
S Problem mit Einbindung einer externer Bibliothek Android & Cross-Platform Mobile Apps 2
S Variable Anzahl von Bytes aus einer Datei lesen Android & Cross-Platform Mobile Apps 2
P Erstellen einer Jar-File Android & Cross-Platform Mobile Apps 2
W JSONARRAY per Intent an andere Activity übergeben und umwandeln ggbf. Android & Cross-Platform Mobile Apps 1
CT9288 Methode von Fragment durch Activity rufen scheitert Android & Cross-Platform Mobile Apps 7
L Android Lockscreen-Sperrmuster activity verwenden Android & Cross-Platform Mobile Apps 1
J Android App stürzt ab wenn neue activity gestartet Android & Cross-Platform Mobile Apps 6
D Android Activity wechseln per Button Android & Cross-Platform Mobile Apps 3
P Android Android-App Crash - Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 2
S Neue Activity lässt sich nicht starten Android & Cross-Platform Mobile Apps 28
B Android Activity nach gedrückte Returntaste weiterlaufen lassen Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben