2010-10-05 4 views
6

Wie diese Funktion erhalten:Wie überprüfe ich den Typ eines View-Widgets?

if(findViewById(ResIdWithUnkownType) instanceof Bitmap) 
{ 
     Bitmap bitmap = (Bitmap) findViewById(ResIdWithUnkownType); 
} else if(findViewById(ResIdWithUnkownType) instanceof ImageView) 
{ 
     ImageView = (ImageView) findViewById(ResIdWithUnkownType); 
} 
+1

auf einer nicht verwandte Notiz, dann würden Sie das 'View' Objekt besser dran speichern, bevor es gibt eher Überprüfung als Aufruf' findViewById' immer und immer wieder ... –

Antwort

6

Der zweite Block gut funktionieren würde. Das Problem ist das erste: findViewById gibt ein View Objekt immer zurück und Bitmap ist kein View, so dass die erste if Anweisung nie ausgeführt wird.

+0

Danke für die schnelle Antwort. Eigentlich hängt es damit zusammen, wenn du es dir anschauen willst: http://stackoverflow.com/questions/3864977/android-how-to-exchange-an-image-in-a-layer-list-by-a -Bitmap – OneWorld

3

Dies ist nicht die Antwort, aber für andere, die diese Frage prüfen, in einigen Fällen instanceof funktioniert nicht (ich weiß nicht, warum!), Zum Beispiel, wenn Ihr wollen, wenn der Typ ImageView oder ImageButton ist Ansicht überprüfen (i getestet diese Situation), ist es ihnen das gleiche bekommen, so dass Sie auf diese Weise scannen verwenden:

//v is your View 
    if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageView")) { 
     Log.e("imgview", v.toString()); 
     imgview = (ImageView) v; 
    } else if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageButton")) { 
     Log.e("imgbtn", v.toString()); 
     imgbtn = (ImageButton) v; 
    } 
Verwandte Themen