初次开发安卓时,往往代码比较简单,全部写在一个 Activity.java 文件中即可。但是稍微有点代码量的项目,都不可能有所有代码写在一个 .java 文件中,那么我们就要拆开。
Java 的类没有 partial 这个关键词(C# 有),所以要拆开就必须拆开为不同的类。这个根据功能来拆即可。比如我们在项目中发现有太多的 EditText 都使用同一个 TextWatcher,且这个 TextWatcher 的代码量还不小,我们就把这个 TextWatcher 拆出来。
拆出来会遇到一些问题,比如我们在 TextWatcher 中使用了 findViewById 发现不能使用了,这是由于只有派生自 Activity 的类才能使用 findViewById,那是不是我们让新建的类 extends Activity 就可以了呢?显然不是,我们不是为了使编译通过就了事。
解决办法:
Activity 也可以是 View,只是调用方式不同。
错误做法:
网上有人说这样做:
这样做虽然运行时不报错,也取到了 EditText,但是取到的这个 EditText 并不是用户看到的这个 EditText,所以 getText().toString() 取到的全部是 EditText 的初始值,并不是用户实际的输入值。