Search code examples
javaandroidbuttontoast

Toast inside a Button OnclickListener is not working


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?


Solution

  • 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();