I know this may be the older one but I have humped into something related to this issue when I used InputType
and app:passwordToggleEnabled="true"
together.
So, writing this, as it may help someone over here.
I want to use a custom font to password field along with app:passwordToggleEnabled
option for my password input field. But in 27.1.1 (while writing this) support library, it was crashing.
So the code was like below,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/_10dp"
android:layout_marginTop="@dimen/_32dp"
android:hint="@string/current_password"
android:textColorHint="@color/hint_text_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|left"
android:maxLines="1"
android:textAlignment="viewStart"
android:textColor="@color/black"
android:textColorHint="@color/camel"
android:textSize="@dimen/txt_16sp"
app:font_style="regular"
app:drawableEnd="@drawable/ic_remove_eye" />
</android.support.design.widget.TextInputLayout>
Above code do not have inputType
defined in XML
EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());
And in Java, setTransformationMethod
will help me acquire the properties of textPassword
input type and also I'm happy my custom font style.
But the below-mentioned crash happened in all API levels with 27.1.1 support library.
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.support.design.widget.CheckableImageButton.setChecked(boolean)'
on a null object reference
This was crashing due to the onRestoreInstanceState
inside TextInputLayout
class.
Reproduce Steps: Toggle the password visibility and minimize the app and open from the recent apps. Uh,ho Crashed!
All I needed is default password toggle option (using support library) and custom font in the password input field.
After some time, figured out by doing as below,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/_10dp"
android:layout_marginTop="@dimen/_32dp"
android:hint="@string/current_password"
android:textColorHint="@color/hint_text_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|left"
android:maxLines="1"
android:textAlignment="viewStart"
android:textColor="@color/black"
android:textColorHint="@color/camel"
android:textSize="@dimen/txt_16sp"
app:font_style="regular"
app:drawableEnd="@drawable/ic_remove_eye"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
In XML, added android:inputType="textPassword"
TextInputLayout inputPassword = findViewById(R.id.input_password);
EditText password = findViewById(R.id.password);
EditText userName = findViewById(R.id.user_name);
// Get the typeface of user name or other edit text
Typeface typeface = userName.getTypeface();
if (typeface != null)
inputLayout.setTypeface(typeface); // set to password text input layout
In above java code,
I acquired the custom typeface from username EditText
and applied it to TextInputLayout
of the password field. Now you don't need to set the typeface explicitly to the password EditText
as it will acquire the TextInputLayout
property.
Also, I removed password.setTransformationMethod(new PasswordTransformationMethod());
By doing this way, passwordToggleEnabled
is working, the custom font is also applied and bye-bye to the crash. Hope this issue will be fixed in upcoming support releases.