【问题标题】:How to check the type of a view widget?如何检查视图小部件的类型?
【发布时间】:2010-10-05 14:41:44
【问题描述】:

如何让它发挥作用:

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

【问题讨论】:

  • 在不相关的注释中,您最好在检查其类型之前保存View 对象,而不是一遍又一遍地调用findViewById...

标签: android android-widget imageview android-layout


【解决方案1】:

第二个块可以正常工作。问题出在第一个:findViewById 返回一个View 对象always,而Bitmap 不是View,所以第一个if 语句永远不会被执行。 p>

【讨论】:

【解决方案2】:

这不是答案,但对于检查此问题的其他人,在某些情况下 instanceof 不起作用(我不知道为什么!),例如,如果您想检查视图类型是 ImageView 还是 @ 987654323@(我测试过这种情况),它得到了相同的,所以你扫描使用这种方式:

//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; 
    }

【讨论】:

    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多