メソッドのパラメーターの 1 つはToast.makeText()コンテキストです。
そのパラメータについてはActivityName.this、一部の Android の教科書のように値が指定されていることがわかります。
これはいけませんthis.xxxか?
メソッドのパラメーターの 1 つはToast.makeText()コンテキストです。
そのパラメータについてはActivityName.this、一部の Android の教科書のように値が指定されていることがわかります。
これはいけませんthis.xxxか?
ActivityName.thisコードがネストされたクラスにある場合、その名前を持つ外側のクラスのオブジェクトへの参照を取得します。たとえば、 のコード内に次Activityのコードを記述した場合:
public void onCreate(Bundle bundle) {
// ...
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() { // An anonymous nested class
@Override
public void onClick(View v) {
Toast.makeText(this, "Example", Toast.LENGTH_SHORT);
// This one causes an error; this is not a Context
Toast.makeText(YourActivity.this, "Example", Toast.LENGTH_SHORT);
// This one works
}
});
}
1 つ目thisは、 type のオブジェクトを参照するようになりましたOnClickListener。ではないContextのでエラーです。2 番目のものは local を参照します。YourActivityこれは であるActivityためContext、機能します。
常にではありませんが、トーストを作成する場所によって異なります。たとえば、クリック リスナーのonClickメソッドでトーストを作成する場合は、コンテキストを提供できないボタンになります。Buttonthis
あまり。の内部クラス内にいる場合はActivityName、 を呼び出しますActivityName.this。内部クラスでない場合は、 を呼び出すだけthisです。ポイントは、 を参照してActivityコンテキストとして使用することです。