按此按钮时,我正在尝试显示吐司。但是代码不起作用

时间:2013-03-07 17:45:29

标签: android toast

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            EditText text = (EditText)findViewById(R.id.editText1);
            EditText text1 = (EditText)findViewById(R.id.editText2);
            String userid = text.getText().toString();
            String pass = text1.getText().toString();
        Toast.makeText(getBaseContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();
        }

    });

}

代码执行成功,但按下按钮时没有任何反应。 当我专注于eclipse中的行时,它会说明以下内容

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

请告诉我我需要做些什么才能让它发挥作用

3 个答案:

答案 0 :(得分:17)

您必须将当前的上下文作为第一个参数(而不是getBaseContext())传递。在您的情况下,这是MainActivity.this

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();

答案 1 :(得分:2)

这是因为代码中该点的getBaseContext()引用了单击侦听器。您想要参考的是您的活动。您应该在Toast消息中将Context的引用更改为 View.getContext() (如果在子视图中处理上下文)或

答案 2 :(得分:0)

Toast.makeText(getApplicationContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();

OR

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();

方法语法

public static Toast makeText (Context context, CharSequence text, int duration);

要使用的上下文。通常是您的Application或Activity对象。