Android设置Tag,findViewWithTag

时间:2013-06-21 10:43:48

标签: android android-imageview android-view android-context

我正在尝试通过标记找到ImageView。我为ImageView分配了一个标签,但是当我尝试findViewWithTag时,它返回null。我读过我应该用addChilder添加childer视图,但视图没有这个功能。有人能解释我怎么能这样做吗?

ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);
    principal.setTag("principal");

在我传递上下文的其他类(AsyncTask)中

        View noMiembros = new View(context);

        ImageView er = (ImageView) noMiembros.findViewWithTag("principal");
        er.setImageBitmap(result);

3 个答案:

答案 0 :(得分:4)

将活动传递给AsyncTask并使用:

ImageView principal = (ImageView) passedActivity.findViewById(R.id.imagen_home_0);

或者从上下文获取inflater:

LayoutInflater inflater = LayoutInflater.from(context);
View row = inflater.inflate(R.layout.your_viw_that_contains_that_image, parent, false);

ImageView principal = (ImageView) row.findViewById(R.id.imagen_home_0);

//or by tag 
principal = (ImageView) row.findViewWithTag("principal");

祝福。

答案 1 :(得分:4)

您正在findViewWithTag致电noMiembros 这是一个新观点。

您需要在ImageView的父级上调用findViewWithTag 你想要达到。

但是如果你想从AsyncTask中获取你的ImageView,只需要调用 您的活动findViewById(R.id.imagen_home_0)

答案 2 :(得分:0)

我相信你......误解了这两个标签。

setTag()可以将任何对象附加到视图中,而XML标记只是一个字符串 - 我相信findViewByTag将尝试匹配通过XML传递的标记,而不是通过代码附加的标记 - 它可能是任何物体。

为什么不将principal imageView传递给asyncthread?