Drawable in R.drawable suchen

  • Antworten:6
Martin A.
  • Forum-Beiträge: 19

28.09.2011, 15:37:05 via Website

Hallo,

ich habe Views mit verschiedenen Hintergrundbildern. Diese werden auch mit setBackgroundResource(R.drawable.bla) fleißig geändert. Nun will ich aber auch wissen, welches Bild ein bestimmtes View gerade hat. Mit

myView.getBackground()

kann man das Hintergrundbild als Drawable abrufen. Aber wie vergleiche ich, welche Resource das denn jetzt ist? Grob gesagt, möchte ich ca folgendes:

if (myView.getBackground() == R.drawable.bla) ...

... Wobei mir völlig egal wäre, ob da die Integerwerte aus R.java, der String "bla" oder Objekte, Views oder Drawables miteinander verglichen werden

Danke vorab für jede Hilfe
Martin

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

28.09.2011, 15:50:50 via Website

warum gibst du nicht einfach der View eine eindeutige ID oder einfach einen tag ?

damit kannst du dann später vergleichen

swordiApps Blog - Website

Antworten
Martin A.
  • Forum-Beiträge: 19

28.09.2011, 17:00:12 via Website

@Markus:

Ich suche nicht die View, sondern das Hintergrundbild der View.

Martin

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

28.09.2011, 17:13:21 via App

Ja,
aber beim Setzen des Hintergrundes, kannst du dir doch den Integer im Tag speichern?
Lg Ansgar

Antworten
Martin A.
  • Forum-Beiträge: 19

28.09.2011, 20:26:15 via Website

beim Setzen des Hintergrundes, kannst du dir doch den Integer im Tag speichern

Hm, na ja, könnte ich machen.

Wirklich begeistert bin ich von der Idee aber, offen gesagt, nicht. Das ist redundante Datenhaltung - warum sollte man etwas nochmal speichern, was schon da ist? (Merkt man, dass ich mit Datenbanken zu tun habe?)

Als Newbie habe ich zunehmend das Gefühl, die Android-Entwickler haben die ganze Sache mit R nicht wirklich durchdacht. Wieviel eleganter lässt sich XML mit Javascript behandeln. Einfach direkt auf das DOM zugreifen, getElementById und so.

Also, wenn noch jemand eine Idee haben sollte, wie man direkt auf das Hintergrundbild zugreifen könnte, nur zu! Ich bin irgendwo bei R.drawable.class... verzweifelt.

bis denn
Martin

Antworten
Ben Becker
  • Forum-Beiträge: 209

29.09.2011, 00:10:44 via Website

Das heißt du willst diese zwei Zahlen mit einander Vergleichen? Weil die Drawables werden ja auch nur als Zahlen gespeichert. Das sollte doch irgendwie gehen. Was bekommst du denn bei myView.getBackground() raus wenn du dir das in das Log schreiben lässt?

Antworten
Martin A.
  • Forum-Beiträge: 19

29.09.2011, 11:18:41 via Website

Das heißt du willst diese zwei Zahlen mit einander Vergleichen?

Ja. Oder meinetwegen die entsprechenden Objekte.

Was bekommst du denn bei myView.getBackground() raus

Drawable curImg = myView.getBackground();
String info= curImg.toString();

Dann enthält info etwas wie
android.graphics.drawable.NinePatchDrawable@43e47b08

R.java hat der Grafik den Wert 0x7f020009 zugeteilt; die Werte sind also nicht identisch.

Einen Objektvergleich habe ich auch schon vergebens versucht:
Object curImg = (Object) myView.getBackground();
bzw. das Vergleichsobjekt ebenfalls. Aber das habe ich ebenfalls nicht hinbekommen.

bis denn
Martin

Antworten