问题
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