Java 如何在Android中从内部类运行方法?
大家好。我有以下代码Java 如何在Android中从内部类运行方法?,java,android,Java,Android,大家好。我有以下代码 public class ChangeActivity extends Activity { EditText myTextBox; void doProcessing(){ /*do something*/ } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
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()中。您可以使用类名和
this
从内部类访问外部类。例如:
ChangeActivity.this.doProcessing();
您可以从内部类中的外部类访问方法 Alan在OuterClass上是正确的。这是一种语法,但只有在需要消除同名方法之间的歧义时,才需要使用它。在这种情况下,您不需要这样做 为了说明我的观点,这段简化但等效的代码编译得很好
public class Temp {
void foo() { }
public void bar() {
new Thread(new Runnable() {
@Override
public void run() {
foo();
}
});
}
}
所以。。。当你说你不能访问它时,你的意思是什么?实际上,从你的代码中,你可以简单地访问它。不过,我认为在上述情况下不需要语法。。。当然,除非TextWatcher也有一个doProcessing()方法。