我得到了许多与密码可见性有关的崩溃。
另一个奇怪的是它在一些设备上崩溃了,而不是全部。
我在诺基亚5、三星Note 4和S7、Honor 5C和9、Redmi Note 4和4、Moto E和G Play以及Moto M上都进行了测试,一切正常。
JavaCoCd

    EditText loEtPassword = (EditText) findViewById(R.id.etPassword);
    loEtPassword.setTransformationMethod(new PasswordTransformationMethod()); // Java internal class.
    loEtPassword.setOnEditorActionListener(new DoneOnEditorActionListener(loBtnLogin)); // custom class.

验证
    public static class LoginUser {
          public String lsEmail, lsPassword, lsIMEINumber, lsJsonParameter;
    }

    LoginUser loLoginUser = new LoginUser();
    loLoginUser.lsEmail = loEtEmail.getText().toString().trim();
    loLoginUser.lsPassword = loEtPassword.getText().toString();

    if (validate(loLoginUser)) {
          //cont...
    }

    private boolean validate(LoginUser foLoginUser) {

          final EditText loEtPassword = (EditText) findViewById(R.id.etPassword);

          boolean lbIsValid = true;

          if (foLoginUser.lsPassword.length() <= 0) {
              loEtPassword.setError("Please enter Password");
              loEtPassword.requestFocus();
              lbIsValid = false;
          }
          return lbIsValid;
      }

XML文件
 <android.support.design.widget.TextInputLayout
            android:id="@+id/ilPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/textColorGray"
            app:hintEnabled="false"
            app:passwordToggleEnabled="true"
            app:passwordToggleTint="@color/textColorGray">

            <EditText
                android:id="@+id/etPassword"
                style="@style/editTextStyle"
                android:layout_marginBottom="@dimen/MarginBetweenView"
                android:backgroundTint="@color/textColorGray"
                android:drawableLeft="@drawable/ic_password"
                android:drawableStart="@drawable/ic_password"
                android:drawablePadding="@dimen/MarginBetweenInnerView"
                android:hint="@string/HINT_PASSWORD"
                android:imeOptions="actionDone"
                android:inputType="textEmailAddress" />
 </android.support.design.widget.TextInputLayout>

设计
android - 密码可见性在升级依赖性为27.1.0时切换崩溃应用程序-LMLPHP
小精灵
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.packageName"
        minSdkVersion 14
        targetSdkVersion 25
        multiDexEnabled true
        versionName '7.2'
        versionCode 96
    }
dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}
buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile files('libs/gcm.jar')
    compile 'com.android.support:support-v4:27.1.0'
    compile 'com.android.support:appcompat-v7:27.1.0'
    compile 'com.android.support:design:27.1.0'
    compile 'com.google.android.gms:play-services-analytics:11.8.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
        transitive = true
    }
    compile 'com.google.firebase:firebase-core:11.8.0'
}

apply plugin: 'com.google.gms.google-services'

参考过去24小时内发生的21起车祸。
android - 密码可见性在升级依赖性为27.1.0时切换崩溃应用程序-LMLPHP
事故日志
Caused by java.lang.NullPointerException
Attempt to invoke virtual method 'void android.support.design.widget.CheckableImageButton.setChecked(boolean)' on a null object reference arrow_right
android.support.design.widget.TextInputLayout.passwordVisibilityToggleRequested (Unknown Source:1339)
android.support.design.widget.TextInputLayout.onRestoreInstanceState (Unknown Source:1033)
android.view.View.dispatchRestoreInstanceState (View.java:15777)
android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3233)
android.support.design.widget.TextInputLayout.dispatchRestoreInstanceState (Unknown Source:1041)
android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3239)
android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3239)
android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3239)
android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3239)
android.view.View.restoreHierarchyState (View.java:15755)
com.android.internal.policy.PhoneWindow.restoreHierarchyState (PhoneWindow.java:2106)
android.app.Activity.onRestoreInstanceState (Activity.java:1098)
android.app.Activity.performRestoreInstanceState (Activity.java:1053)
android.app.Instrumentation.callActivityOnRestoreInstanceState (Instrumentation.java:1175)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2714)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2802)
android.app.ActivityThread.-wrap12 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1549)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:163)
android.app.ActivityThread.main (ActivityThread.java:6361)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:904)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)

有人能帮忙防止这个虫子吗?
我需要升级我的targetSdkVersion
如果有其他的解决方案,请提出建议,因为如果我改变目标sdk版本,那么我必须更新我的应用程序中的许多代码。

最佳答案

我通过简单地将edittext的inputType更改为textPassword来解决这个问题。所以你应该试试这个:

<EditText
    android:id="@+id/etPassword"
    ...
    android:inputType="textPassword" />

我想你不是有意把它设为textEmailAddress

关于android - 密码可见性在升级依赖性为27.1.0时切换崩溃应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49644402/

10-10 17:23
查看更多