Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中从内部类运行方法?_Java_Android - Fatal编程技术网

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()方法。