1. snowman2, 08.03.2012 #1
    snowman2

    snowman2 Threadstarter Erfahrener Benutzer

    Im OnClick wird mir das geklickte View übergeben. Wie kann ich herrausfinden von welcher Class das View ist? Also so ähnlich wie folgender pseudo Code:
    Code:
    public void onClick(View v) {
        if (v.class == Button){
            mach was;
        }
    }
    
    Ach mist zu früh gepostet, eben gerade noch eine Idee gehabt und sie funktioniert auch noch.
    Code:
    public void onClick(View v) {
         if (v.getClass() == Button.class) {
             mach was;
         }
    }
    
     
    Zuletzt von einem Moderator bearbeitet: 09.03.2012
  2. swordi, 08.03.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    v instanceof Button

    würde gehen
     
    snowman2 und Neeldarax haben sich bedankt.
  3. the_alien, 08.03.2012 #3
    the_alien

    the_alien Android-Lexikon

    instanceof ist das einzige was man nutzen sollte an dieser Stelle.
     
    snowman2 und Neeldarax haben sich bedankt.
  4. JanF, 08.03.2012 #4
    JanF

    JanF Android-Experte

    Wieso ist instanceof das einzige was man nutzen sollte?
    Schließlich liefert das ja auch true, wenn mit einer Unterklasse geprüft wird, während man die Klasse vergleicht diese Problem ausschließen kann.
     
  5. sixi, 09.03.2012 #5
    sixi

    sixi Erfahrener Benutzer

    Ich würde es nicht "Problem" nennen, denn genau das Verhalten macht ja Sinn! Ist sicherlich eine Frage, was man erreichen möchte, aber gerade dafür ist ja die Vererbung da :) Und es ist schon Sinnvoll, dass auch meine Klasse SuperKrasserLeuchteKlickiBuntiButton die Button erweitert gleich behandelt wird - da ja das Verhalten der Klasse "Button" enthalten ist ;)
     
    snowman2 bedankt sich.
  6. Neeldarax, 09.03.2012 #6
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Das bei Object-Vergleich ein true rauskommt ist reiner Glücksfall!

    getClass() liefert ein Object zurück. Objekte vergleicht man in Java nicht mit "==".
    java object vergleichen - Google-Suche

    Alle Klarheiten beseitigt? :)

    regards
     
  7. swordi, 09.03.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    naja in dem fall gehts, weil es ja die gleiche referenz ist. man sollte halt nur genau wissen was man tut :)
     
  8. JanF, 09.03.2012 #8
    JanF

    JanF Android-Experte

    Ich habe ja nicht geschrieben, dass man mit == vergleichen sollte, sondern nur, dass
    Code:
    instanceof
    nicht der einzige Weg ist und angedeutet warum. Der andere ist natürlich über getClass().equals().

    Und letzterer Weg ist sogar zu bevorzugen, wenn man eigene Comparatoren schreibt, weil diese antisymmetrisch* sein sollen, instanceof es aber dabei ungünstig ist.
    Ich habe lediglich darauf aufmerksam gemacht, was bei instanceof zu beachten ist.

    *bis auf vergleich mit null
     
    Zuletzt bearbeitet: 09.03.2012
  9. snowman2, 09.03.2012 #9
    snowman2

    snowman2 Threadstarter Erfahrener Benutzer

    Ihr müsst euch nicht gleich prügeln wegen meiner Frage :biggrin:.

    Ich nehme dann halt instanceof. Ich lass mich ja gerne beraten.

    Danke euch allen.