按钮内的按钮OnclickListener不起作用
intdelay
在代码的开头被初始化为1000
。 我试图确保intdelay
的值由编辑框中的值更新,方法是单击按钮时添加一个烤面包。 但是当我运行应用程序,我得到以下问题:按钮内的按钮OnclickListener不起作用
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();
}
});
我该如何解决呢?
这是因为makeText
希望有一个Context
作为第一个参数。您位于OnClickListener
的onClick
函数中。这意味着this
指向您的OnClickListener
。
你必须有这样的事情
Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
太棒了!它的工作 – Aloweiwi
尝试这样的:
Toast.makeText(YourActivityName.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
太棒了!它的工作 – Aloweiwi
如果它的工作比接受我的回答 –
变化的背景下,如果不somwthing可能错在flashLight.switchFlash方法
你给了错误的环境下; 改变这一行:
Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
到
Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
太棒了! 它的工作 – Aloweiwi
你可以接受这个答案。 –
您正在试图展示OnClickListener
里面你的面包。在这种情况下,this
关键字是指OnClickListener
类型的实例,而不是Context
,就像它是必需的。
您应该使用<YourActivityClass>.this
来引用封闭活动实例,即Context
,并且可用于显示敬酒。
尝试插入这行代码:
Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();
请在您的活动做这些,
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();
调试你的代码,我认为flashLight.switchFlash();这有个例外 – YUVRAJ
容易的问题!大家都在回答 –