2013-06-21 69 views
0

我試圖通過標記找到ImageView。我爲ImageView分配了一個標籤,但是當我嘗試查找ViewWithTag時,它將返回null。我讀到應該用addChilder添加childer的視圖,但視圖沒有這個功能。有人可以向我解釋我如何做到這一點?Android設置標記,findViewWithTag

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

傳遞一個活動到的AsyncTask,只需使用

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"); 

最良好的祝願。

0

我相信,你是...誤將這兩個標籤。

setTag()可以將任何對象附加到視圖,而XML標記只是一個字符串 - 我相信findViewByTag將嘗試匹配通過XML傳遞的標記,而不是通過代碼附加的標記 - 因爲它可能是任何對象。

爲什麼不只是將principal imageView傳遞給asyncthread?從上下文

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

或吹氣得到這樣的:

+0

這是錯誤的。方法簽名是public View findWithTag(Object tag)。 –

+1

問題是noMiembros是一個新創建的視圖,它不包含ImageView,也不可能包含它,因爲它不是一個VIewGroup –

3

您正在致電findViewWithTagnoMiembros 這是一個新的視圖。

您需要致電findViewWithTag您試圖聯繫的ImageView 的父級。

但是,如果您想從AsyncTask中獲取ImageView,請在您的Activity上調用 findViewById(R.id.imagen_home_0)

+0

這是正確的答案 –