如何在Android中从内部类运行方法?

时间:2015-05-28 14:07:06

标签: java android

Hello stackoverflow人。我有以下代码。

public class ChangeActivity extends Activity {
EditText myTextBox;

void doProcessing(){ /*do something*/ }
@Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  myTextBox = (EditText) findViewById(R.id.myTextBox);
  myTextBox.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {
   }

   public void beforeTextChanged(CharSequence s, int start, 
     int count, int after) {
   }

   public void onTextChanged(CharSequence s, int start, 
     int before, int count) {
     doProcessing();
   }
  });
 }
}

问题是:我无法从onTextChanged()访问doProcessing()。怎么解决?我需要doProcessing来处理其他代码,所以我不想把它放在onTextChanged()中。

2 个答案:

答案 0 :(得分:1)

您可以使用类名和this从内部类访问外部类。例如:

ChangeActivity.this.doProcessing();

答案 1 :(得分:0)

您可以从内部类的外部类访问方法。

Alan在OuterClass.this语法上是正确的但是如果你需要消除具有相同名称的方法之间的歧义,你只需要使用它。在这种情况下,您不需要这样做。

为了说明我的观点,这个简化但等效的代码编译得很好......

public class Temp {
    void foo() { }

    public void bar() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                foo();
            }
        });
    }
}

所以...当你说你无法访问它时,你的意思是什么?