Bekommen integer-Wert aus dimens.xml Ressource-Datei in Android
Ich habe eine EditText, die dezimal und ich seine Länge mit android:maxLength Eigenschaft in xml:
<EditText
android:id="@+id/quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberDecimal"
android:singleLine="true"
android:maxLength="@integer/quantity_length" />
Als seine Länge wird nicht nur in der UI-xml-Datei aber auch in einer java-Klasse und vielleicht sind einige andere Orte, die ich will, um Probleme zu vermeiden, wenn ich ein update dieser Wert in Zukunft, so will ich die Länge in der zentrale dimens.xml Ressource-Datei wie folgt:
dimens.xml
<resources>
<!-- other things -->
<!-- Constants -->
<item name="quantity_length" format="integer" type="integer">10</item>
<!-- other things -->
</resources>
Aus einer java-Klasse, die ich brauche, um diese zu Lesen, damit ich durchführen:
TypedValue typedValue = new TypedValue();
this.getResources().getValue(R.integer.quantity_length, typedValue, true);
aber ich kann feststellen, dass es keine Methode getInt(), nur getFloat():
int digitsBefore = typedValue.getFloat();
so, wie ich brauchen, um es als integer.... wie Sie dies tun? Natürlich, vielleicht kann ich es mit getFloat() und dann die Umwandlung in integer.... aber ich weiß nicht, ob es einen eleganten Weg, es zu tun... also irgendwelche Ideen?
UPDATE:
Oooppssss ich einen Fehler begangen hat. Es ist:
int Menge = typedValue.getFloat();
statt:
int digitsBefore = typedValue.getFloat();
- warum sind Sie nicht mit
getResources().getDimens
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht speichern Sie die ganze Zahl in res/integers.xml
Und zum Zugriff auf die Werte im code
Oder in XML -
Du brauchst
TypedValue
verwenden Sie die folgenden(int) this.getResources().getDimension(R.integer.quantity_length)
;Dein Beispiel, warum nicht Sie diese Methode verwenden?
XML
JAVA
Verwenden:
Getestet habe ich mit Android Studio 3.3.1 mit lollipop SDK
Halten Sie ein Auge auf die Pfade...
Sauber und bauen... ich hatte eine ziemlich harte Zeit, die denken, dass es nicht funktioniert, aber nach dem löschen der Datei und Neu hinzufügen, und einige saubere und bauen, ich habe es funktioniert seltsam...
1. Das funktioniert ( beachten Sie die Zecke und den Pfad an)
2. Hier ist der Beweis