www.cftea.com

将 Activity 拆分为多个类,其他类中如何用 findViewById()、getText()

ITPOW2017/3/6 13:22:45

初次开发安卓时,往往代码比较简单,全部写在一个 Activity.java 文件中即可。但是稍微有点代码量的项目,都不可能有所有代码写在一个 .java 文件中,那么我们就要拆开。

Java 的类没有 partial 这个关键词(C# 有),所以要拆开就必须拆开为不同的类。这个根据功能来拆即可。比如我们在项目中发现有太多的 EditText 都使用同一个 TextWatcher,且这个 TextWatcher 的代码量还不小,我们就把这个 TextWatcher 拆出来。

将 Activity 拆分为多个类

拆出来会遇到一些问题,比如我们在 TextWatcher 中使用了 findViewById 发现不能使用了,这是由于只有派生自 Activity 的类才能使用 findViewById,那是不是我们让新建的类 extends Activity 就可以了呢?显然不是,我们不是为了使编译通过就了事。

解决办法:

Activity 也可以是 View,只是调用方式不同。

错误做法:

网上有人说这样做:

这样做虽然运行时不报错,也取到了 EditText,但是取到的这个 EditText 并不是用户看到的这个 EditText,所以 getText().toString() 取到的全部是 EditText 的初始值,并不是用户实际的输入值。

<<返回首页<<