1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. Duckemai, 16.09.2011 #1
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Hallo zusammen,

    ich habe einen Button, auf den ich ein Image abgelegt habe.

    meinButton.setImageResource(R.drawable.image_1);

    Nun möchte ich auf diesem Button das Image ändern. Also zB image_2.png
    darauflegen. Dafür müsste ich aber vorher auslesen, ob image_2 schon
    auf dem Button liegt. Dann müsste er nämlich wieder image_1 drauflegen.

    Habe es so versucht:
    if (meinButton.getBackground().equals(R.drawable.image_1)){
    ...dann ändere in image_2 ansonsten setze image_1

    Geht aber nicht, da meinButton.getBackground() eine andere ID hat als
    die einzelne image_1.png. Selbst wenn auf dem Button die image_1 draufliegt, schlägt der Vergleich fehl. Weiß jemand wie ich diesen Vergleich richtigerweise durchführen muss?

    Vielen Dank!
     
  2. Neeldarax, 16.09.2011 #2
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Hi Duckemai,

    Code:
     if (meinButton.getBackground().equals(R.drawable.imag  e_1)){ 
    Da kann ja was nicht stimmen. Das eine ist ein Drawable und das andere ein int. So kannst du nicht vergleichen.

    Darüber hinaus ist deine Idee Performance und Speicher aufwändig.
    Ich würde ein Flag zB ein boolean setzten. Dieses ändert sich mit dem Drawable.

    in Pseudocode:
    Code:
    wenn boolean == true, dann ist drawable1, setzte drawable2 und switche boolen auf false
    wenn boolean == false, dann ist drawable2, setzte drawable2 und switche boolean auf true
    Würde dich nur eine weitere Variable kosten. Hilft dir das weiter?

    regards
     
    Duckemai bedankt sich.
  3. Duckemai, 16.09.2011 #3
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Hi,

    ich dachte, eine Drawable wäre ebenfalls (intern) eine int.
    Sie hat ja wohl auch ein Id. Aber unabhängig von der Image auf dem Button.

    Dein Ansatz hilf mir durchaus weiter. Habe es nun aber mit 2 unabhängigen
    ImageButtons gelöst die ich mal ein- mal ausblende.

    Danke!

    Ducki
     
  4. Swoop, 19.09.2011 #4
    Swoop

    Swoop Android-Hilfe.de Mitglied

    mal unabhängig von dem das ein Drawable kein int sein kann, vergleicht man int nicht mit equals.

    Einfache Datentypen int, double oder chars.
    Objekte Strings, Selbst erstellte Objekte oder Drawables müssen mit equals verglichen werden.

    Ein Drawable ist ein Object und besitzt eine ID =)
     

Diese Seite empfehlen