addPreferencesFromResource - float, int, long, Set<String>

  • Antworten:9
xxx
  • Forum-Beiträge: 25

13.02.2015, 13:00:27 via Website

Wie sind diese Datentypen in der preference.xml (für die Standard-Edit-Funktion) zu definieren?
Mit Boolean und String, inputType und defaultValue, EditText-, CheckBox-, Ringtone- und ListPreference bin ich vertraut.
PUT und GET aus der Anwendung funktionieren.

— geändert am 13.02.2015, 19:09:21

Antworten
Sven R.
  • Forum-Beiträge: 1.904

13.02.2015, 13:38:41 via App

Keine Ahnung was du meinst. Alternativ kannst du dein eigenes View einbinden.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
xxx
  • Forum-Beiträge: 25

13.02.2015, 14:03:08 via Website

Mit anderen Worte: was muß ich in der preferenc.xml angeben, damit die Standard-Methode (aus PreferenceFragment bzw. PreferenceActivity) Werte aus diesen Datentypen anzeigt und bearbeiten läßt?
Zumindest für die numerischen Datentypen kaum vorstellbar. dass diese nicht direkt unterstützt werden.

— geändert am 13.02.2015, 19:12:13

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.02.2015, 14:05:12 via App

In der XML Datei werden alle Dateitypen als String gespeichet und beim laden über die Methoden in das bestimmte numerische Format (int,float) geparst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
xxx
  • Forum-Beiträge: 25

13.02.2015, 14:17:35 via Website

Das sehe ich anders. Wenn ich einen Wert z.B. per putInt abgelegt habe, wie ist der in der preference.xml zu definieren, damit er angezeigt wird und ungekehrt was ist in dieser Datei anzugeben, damit ein numerischer Wert richtig gespeichert wird, damit ich diesen per getInt einlesen kann.
Natürlich kann ich jedes mal Parsen, dass kann aber nicht Sinn und Zweck sein. Dann bräuchte ich ja kein spezielles PUT und GET für diese Datentypen.

— geändert am 13.02.2015, 19:11:12

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.02.2015, 14:40:22 via Website

Ich poste dir jetzt mal ein beispiel einer SharedPreferences Datei:
(der App ProxyDroid)

 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<long name="drt_ts" value="0" />
<string name="port">8080</string>
<string name="profileEntries">Profile 1|New Profile</string>
<boolean name="settings_key_notif_vibrate" value="true" />
<string name="host">10.1.1.2</string>
<boolean name="isRunning" value="false" />
<boolean name="2.7.3" value="true" />
<boolean name="isNTLM" value="false" />
<boolean name="isAutoSetProxy" value="true" />

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
xxx
  • Forum-Beiträge: 25

13.02.2015, 19:41:40 via Website

Danke für deinen Hinweis. Ich sehe darin eine Möglichkeit Vorbelegungen außerhalb des Programmes zu hinterlegen und ggf. auch zu verändern ohne Zugriff auf den Souce-Code zu haben.
Zumindest hat die Variable hier den gewünschten Datentyp.
Ich habe noch nicht verstanden, inwieweit diese Werte auch in die automatische Generierung der Anzeige und Bearbeitung von User-Settings einfließen können und dort auch zur Verwendung des korrekten Datentyps führen.
Darüberhinaus halte ich es für sinnvoll alle zusammengehörenden Infos möglichst zentral an einer Stelle zu hinterlegen und key, title, summary, entries, entryValues, defaultValue, inputType ggf. auch weitere kann/muß ich sowieso in der preference.xml definieren wenn ich die automatische Erstellung der Edit-Maske nutzen möchte. Es geht mir hier um Werte die für den (normalen) Anwender einstellbar sein sollen.

— geändert am 13.02.2015, 19:45:59

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.02.2015, 16:15:07 via Website

Warum musst du diese ausserhalb der App festlegen können?
Normalerweise haben Apps Default Einstellungen, welche der User dann nach belieben ändern kann.

Jetzt lese ich aber von dir,

key, title, summary, entries, entryValues, defaultValue, inputType

Das lässt mich darauf schliessen, dass du nicht die normalen SharedPreferences meinst, sondern einfach nur die Felder Definition für welche dann eine UI mit EditTextfeldern etc. erstellt wird.
Diese Datei kannst du nicht zur Laufzeit verändern, dass muss mit einem Update geschehen. Das was du ändern kannst, sind die gespeicherten Werte dieser Felder (mein XML beispiel oben). Diese datei ist aber für normal User nicht zugänglich und kann nur mit Root Zugriff gelesen werden.

So ganz habe ich dein Vorhaben noch nicht verstenden, villeicht gibt es ja einen anderen Weg das zu lösen.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
xxx
  • Forum-Beiträge: 25

14.02.2015, 17:34:26 via Website

Falls ich mich mißverständlich ausgedrückt haben sollte, möchte ich das hier korrigieren.
Ich möchte nichts außerhalb der App festlegen.
Genau diese User-Setting meine ich.
Ich hatte nie vor diese Datei (die Definitionen) während der Laufzeit zu ändern, geändert werden sollen ganz normal lediglich die Werte durch den Anwender.

Möglicherweise hab ich deinen Ansatz noch nicht vollständig verstanden, aber ich kann nicht erkennen, dass sich daraus automatisch durch Standard-Java-Klassen eine für den normalen Anwender bedienbare und verständliche Oberfläche zum bearbeiten generieren läßt, Dazu gehören für mich nämlich auch verständliche Texte und Regeln, nach denen die Eingaben auf Zulässiglkeit geprüft werden. Das macht das UI (wie du es bezeichnest) in ausreichender Form. Ich denke, dass ist auch die übliche Vorgehensweise in dem meißten Apps. Mir geht es lediglich darum dabei auch die numerischen Datentypen voll zu unterstützen.

Sicher gibt es entsprechende Klassen von Entwicklern, die genau das bewerkstelligen. Auch selber solche Routinen zu entwickeln ist kein Hexenwerk. Nur warum sollte man etwas erfinden, was im Standard vermutlich schon perfekt gelöst ist. Ich suche halt nur nach diesem Ansatz.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.02.2015, 18:11:52 via Website

Ok, numerische Datentypen werden auch von Haus aus unterstützt.
ich weiss nicht wie ganu du dich schon in dieses Thema eingelesen hast aber ich führe dir jetzt mal ein paar (vielleicht) hilfreiche Links auf:

  1. API Doc der Preference Activity: http://developer.android.com/reference/android/preference/PreferenceActivity.html
  2. Tutorial einer PreferenceActivity: http://viralpatel.net/blogs/android-preferences-activity-example/
  3. Input Filter zum erlauben/sperren verschiedener Zeichen: http://www.almadevelop.com/2011/11/android-how-to-use-inputfilter-with.html
  4. Nur zahlen zulassen (einfacher als 3.): http://stackoverflow.com/questions/6231092/input-type-for-edittext-in-preference-screen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten