Как проверить тип виджета вида? - PullRequest
6 голосов
/ 05 октября 2010

Как заставить это работать:

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

Ответы [ 2 ]

6 голосов
/ 05 октября 2010

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

3 голосов
/ 25 марта 2014

Это не ответ, но для тех, кто проверяет этот Вопрос, в некоторых случаях 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; 
    }
...