问题
intdelay
was initialized at the beginning of the code by 1000
.
and I am trying to make sure that intdelay
's value is updated by the value in the edit box by adding a toast when the button is clicked.
but when I run the app, I get the following problem:
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)
This is the part of my code:
@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();
}
});
How can I solve that?
回答1:
That's because makeText
wants to have a Context
as a first argument. You are inside the onClick
function of an OnClickListener
. This means that this
points to your OnClickListener
.
You must have something like this
Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
回答2:
You have given wrong context; change this line:
Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
to
Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
回答3:
Try like this:
Toast.makeText(YourActivityName.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
回答4:
Change the context if not somwthing may wrong in flashLight.switchFlash method
回答5:
You are trying to show your toast inside the OnClickListener
. The this
keyword in this case refers to an instance of type OnClickListener
, and not Context
, like it is required.
You should use <YourActivityClass>.this
to refer to the enclosing activity instance, that is a Context
and can be use to show the toast.
回答6:
Please do these in your activity,
Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();
回答7:
You should change from
Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
to
Toast.makeText(getContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();
回答8:
Try inserting this line of code:
Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();
来源:https://stackoverflow.com/questions/39079607/toast-inside-a-button-onclicklistener-is-not-working