按钮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
作为第一个参数。 您位于OnClickListener
的onClick
函数内。 这意味着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
,就像它是必需的。
您应该使用
来引用封闭活动实例,即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();