在Java中访问外部类的变量

use*_*620 15 java anonymous-inner-class local-variables

在Java android应用程序中如何从内部匿名类访问外部类的变量?例:

    ProgressDialog dialog = new ProgressDialog(this);
    .....
    send.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) {

           //here i'd like to do something with **dialog** variable
           .......

        }
    });
Run Code Online (Sandbox Code Playgroud)

Ric*_*lly 25

如果对话框变量是外部类的字段,则可以使用this带外部类名称的前缀(限定为此):

send.setOnClickListener(new View.OnClickListener() 
{
    public void onClick(View v) {
       ProgressDialog dlg = OuterClass.this.dialog;
       .......
    }
});
Run Code Online (Sandbox Code Playgroud)

或者,如果dialiog变量是局部变量,则需要将其标记为final:

final ProgressDialog dialog = new ProgressDialog(this);
.....
send.setOnClickListener(new View.OnClickListener() 
{
    public void onClick(View v) {
       // The dialog variable is in scope here ...
       dialog.someMethod();
    }
});
Run Code Online (Sandbox Code Playgroud)


Arn*_*len 5

创建外部局部变量(dialog),final以便您可以从内部类引用它.