Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App freeze on keypad open with android studio 3.1 update

App was working fine before update. Whenever i click on some EditTextcursor blinks for some seconds, than app freezes and stuck.

login_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".activities.LoginActivity">

       <app.com.skribl.utils.customviews.CustomTILayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_20sdp"
                android:gravity="center"
                android:textColorHint="@color/orange"
                app:customFont="Raleway-Regular.ttf">

                <app.com.skribl.utils.customviews.CustomEditText
                    android:id="@+id/et_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:hint="@string/prompt_email1"
                    android:inputType="textEmailAddress"
                    android:maxLines="1"
                    android:padding="@dimen/x13dp"
                    android:singleLine="true"
                    android:textColor="@color/blue_dark"
                    android:textSize="14sp"
                    app:customFont="Roboto-Light.ttf" />
            </app.com.skribl.utils.customviews.CustomTILayout>

            <app.com.skribl.utils.customviews.CustomTILayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_5sdp"
                android:gravity="center"
                android:textColorHint="@color/orange"
                app:customFont="Raleway-Regular.ttf">

                <app.com.skribl.utils.customviews.CustomEditText
                    android:id="@+id/et_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:hint="@string/prompt_password"
                    android:inputType="textPassword"
                    android:maxLines="1"
                    android:padding="@dimen/x13dp"
                    android:singleLine="true"
                    android:textColor="@color/blue_dark"
                    android:textSize="14sp"
                    app:customFont="Roboto-Light.ttf" />

            </app.com.skribl.utils.customviews.CustomTILayout>

            <app.com.skribl.utils.customviews.CustomButton
                android:id="@+id/btn_login"
                style="?android:textAppearanceSmall"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_20sdp"
                android:background="@drawable/round_corner_btn"
                android:padding="@dimen/x15dp"
                android:text="@string/action_sign_in_short"
                android:textColor="@color/white"
                android:textSize="@dimen/text_size_moderate"
                android:textStyle="bold"
                app:customFont="Raleway-Regular.ttf" />

        </LinearLayout>

CustomEditText.java

public class CustomEditText extends EditText {
    private static final String TAG = "EditText";

    public CustomEditText(Context context) {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context, attrs);
    }

    private void setCustomFont(Context ctx, AttributeSet attrs) {
        TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
        String customFont = a.getString(R.styleable.CustomTextView_customFont);
        setCustomFont(ctx, customFont);
        a.recycle();
    }


    public boolean setCustomFont(Context ctx, String fontName) {
        Typeface typeface = null;
        try {
            if(fontName == null){
                fontName = Constants.DEFAULT_FONT_NAME_FOR_ET;
            }
            typeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/" + fontName);
        } catch (Exception e) {
            Log.e(TAG, "Unable to load typeface: "+e.getMessage());
            return false;
        }

        setTypeface(typeface);

        return true;
    }

    protected void setSpan_internal(Object span, int start, int end, int flags) {
        final int textLength = getText().length();
        ((Editable) getText()).setSpan(span, start, Math.min(end, textLength), flags);
    }

    protected void setCursorPosition_internal(int start, int end) {
        final int textLength = getText().length();
        Selection.setSelection(((Editable) getText()), Math.min(start, textLength), Math.min(end, textLength));
    }

}

here is log so far:

java.lang.NullPointerException: Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object reference at android.view.inputmethod.InputConnectionWrapper.closeConnection(InputConnectionWrapper.java:270)
        at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:553)
        at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:93)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
like image 417
jake oliver Avatar asked Mar 29 '18 12:03

jake oliver


2 Answers

I started having this crash today all the sudden too in a Nexus 6P running Android 7.1.1. I even when back to a stable branch in the project that I knew was working and the same continue happening. The only difference was that I enabled advanced profiling in Edit Configurations -> app -> Profiling, I disabled it and everything went back to normal. In my case the crash was when the keypad was closing. Hope this can help you.

like image 160
Javier Moreno Avatar answered Nov 10 '22 07:11

Javier Moreno


This is a bug in the Advanced Profiling functionality of Android Studio 3.1, rolling back to 3.0 resolves the issue for me now.

like image 30
Robert Avatar answered Nov 10 '22 07:11

Robert