今天打算写一个关于EditText的Demo,需要用到它的输入监听事件TextWatcher,重写里面的方法时,看到里面的参数就有点懵了:

        editText.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {            }            @Override            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {            }            @Override            public void afterTextChanged(Editable editable) {            }        });

i、i1、i2都是些什么东西?这可把我整糊涂了。想起前两天在重写BaseAdapter中的getView方法,本来应该是convertView的参数名称却成了一个简单的view,与原有的变量重名不说,而且还让人莫名其妙的。这个现象只在我公司的电脑上出现过,我自己的电脑是没有问题的。我开始意识到我公司的电脑上安装的Android Studio可能有问题了。虽然编译完全没事,但是看着心里总有点不爽。于是决定解决这个问题。

搜了一下,发现网上这方面的资料少之又少,但还算找到了一些。发现是编译时的SDK没有关联源码导致的。比如我的build.gradle中的android领域是这样的:

android {    compileSdkVersion 25    buildToolsVersion "25.0.2"    defaultConfig {        applicationId "com.lindroid.edittextdemo"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}

可以看到我编译时使用的SDK版本是25,那么它的源码呢?我们可以按照以下的步骤打开SDKManager查看一下:

  1. 点击这个小按钮:

  2. 点击下面的蓝色文字:

  3. 查看Sources for Android SDK:

    (这里我已经下载过了,但是之前是没有下载。)

显示,由于编译的SDK版本没有关联源码,所以给出来的参数名字显示得都不正常。搞清楚了原因,解决方法就容易找了,可以采取下面两种中的一种:

  1. 修改compileSdkVersion,将其改为你已经下载了Sources for Android SDK的版本的SDK;
  2. 这个方法也是我推荐,直接把编译器需要的源码包下载好就可以,不用老是去修改gradle。

完成之后,重新复写其中的方法就可以看到参数正常显示了:

        editText.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {            }            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {            }            @Override            public void afterTextChanged(Editable s) {            }        });

更多相关文章

  1. android android.support.v4.util.Pools 源码解析
  2. Bundle传值与取值
  3. Android应用程序获取system权限
  4. LeakCanary源码解析之检测篇
  5. Android启动动画
  6. adb:) adb install
  7. ARouter使用及源码简析
  8. android实现倒计时功能的方法
  9. Android(安卓)Studio加载第三方jar包,出现包重复加载的问题解决(:a

随机推荐

  1. Android开机LOG
  2. 如何快速启动安卓模拟器(Android Emulato
  3. 【转】 Android开发手记一 NDK编程实例
  4. Android 实现TextView中文字链接的方式
  5. AndroidRuntime 流程
  6. Android Activity生命周期管理
  7. Day3.4--Android简单UI控件之ImageView以
  8. android多屏幕适配(1)
  9. 2019-01-21 Android UI之SeekBar实际开发
  10. Android 实现TextView中 文字链接的方式