2010-10-05 3 views
6

Как получить эту работу:Как проверить вид виджета вида?

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

на несвязанной ноте, вы бы лучше экономить объекта 'View' перед проверкой его тип, а не вызывать' findViewById' снова и снова ... –

ответ

6

Второй блок будет работать нормально. Проблема первая: findViewById возвращает View объект всегда и Bitmap не является View, поэтому первый оператор if никогда не будет выполнен.

+0

Спасибо за быстрый ответ. На самом деле, это связано с этим, если вы хотите посмотреть на него: http://stackoverflow.com/questions/3864977/android-how-to-exchange-an-image-in-a-layer-list-by-a -битовая карта – OneWorld

3

Это не ответ, а для других, которые проверяют этот вопрос, в некоторых случаях instanceof не работает (я не знаю, почему!), Например, если хотите, чтобы проверить, если посмотреть тип ImageView или ImageButton (я тестировал эта ситуация), то получить их то же самое, так что вы отсканировать использовать этот способ:

//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; 
    } 
Смежные вопросы