-4

メソッドのパラメーターの 1 つはToast.makeText()コンテキストです。

そのパラメータについてはActivityName.this、一部の Android の教科書のように値が指定されていることがわかります。

これはいけませんthis.xxxか?

4

3 に答える 3

1

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、機能します。

于 2013-09-26T07:57:15.687 に答える
1

常にではありませんが、トーストを作成する場所によって異なります。たとえば、クリック リスナーのonClickメソッドでトーストを作成する場合は、コンテキストを提供できないボタンになります。Buttonthis

于 2013-09-26T07:54:01.333 に答える
0

あまり。の内部クラス内にいる場合はActivityName、 を呼び出しますActivityName.this。内部クラスでない場合は、 を呼び出すだけthisです。ポイントは、 を参照してActivityコンテキストとして使用することです。

于 2013-09-26T07:55:21.497 に答える