按钮OnclickListener中的Toast不起作用

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

  Error:(46, 22) error: no suitable method found for makeText(,String,int) method Toast.makeText(Context,CharSequence,int) is not applicable (argument mismatch;  cannot be converted to Context) method Toast.makeText(Context,int,int) is not applicable (argument mismatch;  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(); } }); 

我怎么解决这个问题?

那是因为makeText希望将Context作为第一个参数。 您位于OnClickListeneronClick函数内。 这意味着this指向您的OnClickListener
你必须有这样的东西

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

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

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

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

试试这样:

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

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

您正试图在OnClickListener显示您的吐司。 在这种情况下, this关键字指的是OnClickListener类型的实例,而不是Context ,就像它是必需的。

您应该使用.this来引用封闭活动实例,即Context ,可以用来显示toast。

请在你的活动中做这些,

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

你应该改变

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

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

尝试插入这行代码:

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