Toast inside a Button OnclickListener is not working [duplicate]

心已入冬 提交于 2019-12-31 07:43:24

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!