2012-06-26 22 views
0

所以我用this教程来创建一个自定义的烤面包,它会显示一个图像。如何访问未运行的视图?

现在我想要做的是能够传递图像资源并告诉我的吐司方法来显示该图像。

所以我有这样的:

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没有被使用?

如何更改定制烤面包图片视图的来源?

回答

2

在这里,你忘了查看refrence 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); 
+0

感谢。 我想我对findViewById的使用有点困惑 - 因为你通常可以单独使用它(不附加到视图对象)。当你自己使用它时,它只是搜索当前活动的xml? – dwjohnston