2010-10-05 28 views
6

Cách làm việc đó:Cách kiểm tra loại tiện ích con xem?

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

Lưu ý không phù hợp, bạn nên lưu đối tượng 'View' trước khi kiểm tra loại thay vì gọi' findViewById' hết lần này đến lần khác ... –

Trả lời

6

Khối thứ hai sẽ hoạt động tốt. Vấn đề là vấn đề đầu tiên: findViewById trả về đối tượng Viewluôn làBitmap không phải là View, do đó, câu lệnh if đầu tiên sẽ không bao giờ được thực thi.

+0

Cảm ơn câu trả lời nhanh. Trên thực tế, nó liên quan đến điều này, nếu u muốn nhìn vào nó: http://stackoverflow.com/questions/3864977/android-how-to-exchange-an-image-in-a-layer-list-by-a -bitmap – OneWorld

3

Đây không phải là câu trả lời nhưng cho những người khác kiểm tra Câu hỏi này, trong một số trường hợp instanceof không hoạt động (Tôi không biết tại sao!), Ví dụ nếu muốn của bạn để kiểm tra xem chế độ xem loại là ImageView hoặc ImageButton (i thử nghiệm tình huống này), nó nhận được chúng giống nhau, vì vậy bạn quét theo cách này:

//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; 
    } 
Các vấn đề liên quan