5
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)"

请告诉我我需要做什么才能使它工作

4

3 回答 3

18

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

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();
于 2013-03-07T17:46:55.670 回答
2

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

于 2013-03-07T17:48:51.947 回答
0
Toast.makeText(getApplicationContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show();

或者

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 对象。

于 2013-03-07T17:51:18.117 回答