如何访问未运行的视图?

时间:2012-06-26 06:00:42

标签: android android-imageview layout-inflater findviewbyid

所以我使用this教程创建了一个自定义Toast,它将显示一个图像。

现在我要做的是传递图像资源并告诉我的toast方法来显示该图像。

所以我得到了这个:

 private void callToast(int image_resource)
{               
    LayoutInflater inflater = getLayoutInflater();
    View v = inflater.inflate(R.layout.mycustomtoast, (ViewGroup) findViewById(R.id.toast_layout));

    /*set the image*/           
    ImageView iv = (ImageView)findViewById(R.id.toast_iv);
    iv.setImageResource(image_resource); 

    Toast t = new Toast(this);
    t.setView(v);
    t.setGravity(Gravity.CENTER,0,0); 

    t.show();  
}

现在findViewById返回null ...我明白因为它所使用的XML没有被使用?

如何更改自定义Toast图像视图的来源?

1 个答案:

答案 0 :(得分:2)

这里您忘了查看参考v

ImageView iv = (ImageView)v.findViewById(R.id.toast_iv);

<强>解决方案

Toast t = new Toast(this);
t.setView(v);

ImageView iv = (ImageView)v.findViewById(R.id.toast_iv);
iv.setImageResource(image_resource); 

t.setGravity(Gravity.CENTER,0,0);