35 votes

Erreur due à la combinaison non valide de pain grillé et de OnClickListener

Je suis en train d'utiliser Toast à l'intérieur d' OnCLickListener. Mon code déclenche le message d'erreur suivant:

The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (new View.OnClickListener(){}, String, int)

C'est mon code:

    Button register = (Button) findViewById(R.id.register);
    register.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            EditText name = (EditText)findViewById(R.id.name);
            String Lname = name.getText().toString();

            Toast.makeText(this, Lname, Toast.LENGTH_SHORT).show();



        }
    });

94voto

Computerish Points 5219

Comme Kenny, a déclaré, this fait référence à la View.OnClickListener au lieu de votre Activity. Changer cela, à l' MyActivity.this.

Par exemple,

public class MyActivity extends Activity {
// ... other code here
Toast.makeText(MyActivity.this, Lname, Toast.LENGTH_SHORT).show();

7voto

The-Kenny Points 1229

Dans ce cas, this se réfère à l'instance de l'anonyme sous-classe de la View.OnClickListener. Vous devez vous référer à l' this de la classe dans laquelle vous créez la classe anonyme.

4voto

Amol Points 116

Utiliser MyActivity.this comme this se réfère à votre onclickListener.

3voto

Jock Mahon Points 77

Vous pouvez utiliser getApplicationContext() ainsi. Voir la documentation.

2voto

Hubert Points 3461

N'importe où, il suffit d'utiliser les éléments suivants:

((Activity) mContext).runOnUiThread(new Runnable() {
                    public void run() {
                        Toast my_toast = Toast.makeText(mContext, "YOUR TEXT OR STRING", Toast.LENGTH_LONG);
                        my_toast.setGravity(Gravity.CENTER, 0, 0);
                        my_toast.show();
                    }
                });

Vous avez juste besoin de définir, au-dessus de votre activité (juste après le onCreate):

mContext = this;

Aussi, voir que j'ai décomposé un peu d'être en mesure de gérer la gravité que je veux (parfois, vous pouvez le toast pour apparaître au centre de l'écran)...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X