完成活动后,EditText不会关注

时间:2016-04-26 09:59:23

标签: android

在我的表单活动中,我有3个字段。在确认表单到服务器后,它完成并转到上一个活动。但问题是,完成后键盘仍然弹出,前一个活动没有输入字段。 这是布局文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@color/colorWhite"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/toolbar"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_gravity="center"
            android:layout_margin="20dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <sslwireless.com.easycorporate.Fonts.LoraBold
                android:layout_marginBottom="20dp"
                android:text="@string/change_password_title"
                android:textSize="25sp"
                android:textColor="@color/colorAccent"
                android:gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />


            <EditText
                android:id="@+id/oldPassword"
                android:background="@drawable/super_white_style"
                android:padding="12dp"
                android:layout_marginTop="15dp"
                android:singleLine="true"
                android:inputType="textPassword"
                android:hint="@string/hints_old_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <EditText
                android:id="@+id/newPassword"
                android:background="@drawable/super_white_style"
                android:padding="12dp"
                android:layout_marginTop="15dp"
                android:singleLine="true"
                android:inputType="textPassword"
                android:hint="@string/hints_new_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />


            <EditText
                android:id="@+id/confirmPassword"
                android:background="@drawable/super_white_style"
                android:padding="12dp"
                android:layout_marginTop="15dp"
                android:singleLine="true"
                android:inputType="textPassword"
                android:hint="@string/hints_confirm_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <Button
                android:id="@+id/changePassword"
                android:text="@string/change_password"
                android:layout_marginTop="20dp"
                android:textColor="@color/colorWhite"
                android:background="@drawable/primary_dark_color_style"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </ScrollView>

</LinearLayout>

这是实际发生的事情。

enter image description here

我还在清单文件中为这两个活动设置了android:windowSoftInputMode="stateHidden"。有什么办法可以在回到之前的活动后删除焦点吗?

4 个答案:

答案 0 :(得分:1)

在完成onStop()的{​​{1}}中,禁用所有Activity字段,以使软键盘消失:

EditText

答案 1 :(得分:0)

调用以下代码关闭keybord,点击按钮时调用

InputMethodManager imk = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
        if (imk.isActive()){
            imk.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // hide key board
        } 

答案 2 :(得分:0)

这是今天实际修复了相同错误的东西。

@Override
public void closeKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            //Log.d("RKZ", "isKeyboardShown("+((ViewGroup) findViewById(android.R.id.content)).getChildAt(0)+") = "+isKeyboardShown(((ViewGroup) findViewById(android.R.id.content)).getChildAt(0)));
    if(view != null && Util.isSoftKeyboardShown(imm, view)) {
        Util.hideKeyboard(ActivityASG.this, view);
    }
}

在您的CHANGE PIN按钮onClick()中,只需将其称为:

            //close keyboard
            callback.closeKeyboard(noteInput);
            callback.closeKeyboard(mailInput);
            //callback.closeKeyboard(yourCHANGE_PINview);

答案 3 :(得分:0)

您可以强制IME关闭(在finish()您的活动之前):

public void hideSoftKeyboard(@NonNull Activity activity) {
    IBinder windowToken = activity.getWindow().getDecorView().getRootView().getWindowToken();
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(windowToken, 0);
}