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)"
请告诉我我需要做些什么才能让它发挥作用
答案 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对象。