按钮OnclickListener内的Toast不起作用

时间:2016-08-22 12:29:51

标签: java android button toast

intdelay在代码开头由1000初始化。 我正在尝试通过在单击按钮时添加Toast来确保编辑框中的值更新intdelay的值。 但是当我运行应用程序时,我遇到了以下问题:

 Error:(46, 22) error: no suitable method found for makeText(<anonymous OnClickListener>,String,int)
method Toast.makeText(Context,CharSequence,int) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context)
method Toast.makeText(Context,int,int) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context)

这是我的代码的一部分:

  @Override
        protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        delayedttxt=(EditText)findViewById(R.id.delayedttxt);

    String delay=delayedttxt.getText().toString();       //this will get a string
    try{
        int intdelay = Integer.parseInt(delay);
   }catch(NumberFormatException ex){ // handle your exception
    }

    Button btn=(Button)findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            flashLight.switchFlash();
            Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
        }

    });

我该如何解决?

8 个答案:

答案 0 :(得分:3)

你给出了错误的背景; 改变这一行:

 Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();

 Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();

答案 1 :(得分:1)

那是因为makeText想要Context作为第一个参数。您位于onClick的{​​{1}}函数内。这意味着OnClickListener指向您的this。你必须有这样的东西

OnClickListener

答案 2 :(得分:0)

试试这样:

Toast.makeText(YourActivityName.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();

答案 3 :(得分:0)

如果flashLight.switchFlash方法中没有错误,则更改上下文

答案 4 :(得分:0)

您正试图在OnClickListener内展示您的祝酒词。在这种情况下,this关键字指的是OnClickListener类型的实例,而不是Context,就像它是必需的一样。

您应该使用<YourActivityClass>.this来引用封闭式活动实例,即Context并可用于显示吐司。

答案 5 :(得分:0)

尝试插入以下代码:

 Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();

答案 6 :(得分:0)

请在您的活动中执行这些操作,

Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();

答案 7 :(得分:0)

你应该从

改变
Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();

Toast.makeText(getContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();