This question already has an answer here:
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?
Try like this:
You are trying to show your toast inside the
OnClickListener
. Thethis
keyword in this case refers to an instance of typeOnClickListener
, and notContext
, like it is required.You should use
<YourActivityClass>.this
to refer to the enclosing activity instance, that is aContext
and can be use to show the toast.You should change from
to
That's because
makeText
wants to have aContext
as a first argument. You are inside theonClick
function of anOnClickListener
. This means thatthis
points to yourOnClickListener
.You must have something like this
Try inserting this line of code:
Please do these in your activity,