2010-10-05 13 views
6

कैसे है कि काम कर पाने के लिए:व्यू विजेट के प्रकार को कैसे जांचें?

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

एक असंबंधित नोट पर, आप की जाँच नहीं बल्कि बुला 'findViewById' की तुलना में यह टाइप करने से पहले' View' वस्तु बचत बेहतर होगा बार-बार ... –

उत्तर

6

दूसरे खंड ठीक काम करेगा। समस्या पहला है: findViewByIdView ऑब्जेक्ट हमेशा, और BitmapView नहीं है, इसलिए पहले if कथन कभी निष्पादित नहीं किया जाएगा।

+0

त्वरित उत्तर के लिए धन्यवाद। दरअसल, यह इससे संबंधित है, अगर आप इसे देखना चाहते हैं: http://stackoverflow.com/questions/3864977/android-how-to-exchange-an-image-in-a-layer-list-by-a -bitmap – 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; 
    } 
संबंधित मुद्दे