[英]Toast on an clickable ImageView
有人可以帮忙为可点击的ImageView(链接到URL)设置Toast消息吗?
到目前为止,这就是我所得到的,但是我不确定为什么它会给我一个关于“ maketext”的错误。 如果有人能指出正确的方向,请先谢谢!
public class VideoActivity extends Activity {
ImageView blipImg;
ImageView breakImg;
ImageView dailyMotionImg;
ImageView funnyOrDieImg;
ImageView metaCafeImg;
ImageView netFlixImg;
ImageView socialCamImg;
ImageView tedImg;
ImageView vevoImg;
ImageView viddyImg;
ImageView vimeoImg;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.video1);
blipImg = (ImageView)findViewById(R.id.videoBlip);
blipImg.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://blip.tv"));
startActivity(intent);
Toast toast = Toast.makeText(VideoActivity.this, "Blip", Toast.LENGTH_SHORT);
toast.show();
}
});
breakImg = (ImageView)findViewById(R.id.videoBreak);
breakImg.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://break.com"));
startActivity(intent);
Toast toast = Toast.makeText(VideoActivity.this, "Break", Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
根据文档 ,此方法将Context作为第一个参数,而不是用户单击的View,请尝试使用此方法(将您的Activity作为Context):
Toast toast = Toast.makeText(VideoActivity.this, "Blip", Toast.LENGTH_SHORT);
我认为这是因为您正在传递blipImg而不是上下文
Toast toast = Toast.makeText(VideoActivity.this , "Blip", Toast.LENGTH_SHORT);
要么
Toast toast = Toast.makeText(VideoActivity.this.getApplicationContext() , "Blip", Toast.LENGTH_SHORT);
您正在将ImageView放入Toast中,这是行不通的。
更改
Toast toast = Toast.makeText(blipImg, "Blip", Toast.LENGTH_SHORT);
toast.show();
至
Toast.makeText(VideoActivity.this, "Blip", Toast.LENGTH_SHORT).show();
在您的makeText
,第一个参数应该是Toast
的上下文(将其更改为VideoActivity.this
)。
Toast.makeText()采用不同的参数,您应该传递活动上下文而不是ImageView。 Toast也是静态的,所以这样称呼它:
Toast.makeText(VideoActivity.this, "Blip", Toast.LENGTH_SHORT).show();
到目前为止,正如大家所说,您在makeText()
中使用了错误的param
。 您可以使用ActivityName.this
,它将起作用,但更好的做法是使用被单击View
的Context
,在这种情况下,它将为您提供与ActivityName.this
相同的Context
,但这是更好的做法。
Toast toast = Toast.makeText(v.getContext(), "Blip", Toast.LENGTH_SHORT);
对于Instacne,如果您想将此代码移动或重用于其他地方,则无需更改ActivityName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.