gpt4 book ai didi

android - 密码可见性切换崩溃应用程序,同时将依赖项升级到 27.1.0

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:00 25 4
gpt4 key购买 nike

我遇到了很多与密码可见性相关的崩溃。更奇怪的是它在某些设备上崩溃,但并非全部。

我在诺基亚 5、三星 note 4 和 s7、荣耀 5C 和 9、红米 Note 4 和 4、Moto E 和 G play 以及 moto M 上进行了测试,一切正常。

Java代码

    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>

设计

enter image description here

Gradle

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'

引用 snap - 在过去 24 小时内发生了 21 次崩溃。

enter image description here

崩溃日志

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(或我的 TextInputEditText)的 inputType 更改为 textPassword 来解决这个问题。所以你应该试试这个:

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

我假设您并不是要将其设置为 textEmailAddress

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com