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();
        }

    });

}

コードは正常に実行されますが、ボタンを押しても何も起こりません。日食の行に焦点を合わせると、次のように表示されます

"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メッセージ内のコンテキストの参照を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 に答える