メソッドのパラメーターの 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
メソッドでトーストを作成する場合は、コンテキストを提供できないボタンになります。Button
this
あまり。の内部クラス内にいる場合はActivityName
、 を呼び出しますActivityName.this
。内部クラスでない場合は、 を呼び出すだけthis
です。ポイントは、 を参照してActivity
コンテキストとして使用することです。