繁体   English   中英

在可点击的ImageView上烤面包

[英]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 ,它将起作用,但更好的做法是使用被单击ViewContext ,在这种情况下,它将为您提供与ActivityName.this相同的Context ,但这是更好的做法。

Toast toast = Toast.makeText(v.getContext(), "Blip", Toast.LENGTH_SHORT);

对于Instacne,如果您想将此代码移动或重用于其他地方,则无需更改ActivityName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM