从一个活动移动到另一个活动时,键盘自动弹出

时间:2016-12-20 07:21:30

标签: android keyboard android-softkeyboard autocompletetextview window-soft-input-mode

在我的应用程序中,当我从一个活动转到另一个活动时,会自动弹出软键盘。

我有一个活动(说A),我已经设置了

  android:configChanges="keyboardHidden" 

因为我不想在此活动上使用键盘,但是当我从此活动移动到包含Map和AutoComompleteTextView的另一个活动(比如B)时,键盘会首先自动弹出然后关闭。

我在活动B上尝试了什么: 在清单中我已经设置了

android:windowSoftInputMode="stateHidden|adjustResize"
在oncreate中

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

我也尝试将其放入OnCreate

  try{
        View view = this.getCurrentFocus();
        if (view != null) {
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }catch (Exception e)
    {
        Log.e(TAG, "onCreate: keyboard crash");
        e.printStackTrace();
    }

我还尝试将焦点放在活动中的另一个视图上,如(View v1)

 v1.requestFoucs();

我甚至尝试过把

android:focusableInTouchMode="true"

关于活动B的每个组成部分。

但没有任何对我有用。

请帮我解决这个问题 我已经尝试了所有接受的ans属于以下链接列表:

OnScreen keyboard opens automatically when Activity starts

Automatic popping up keyboard on start Activity

How to avoid automatically appear android keyboard when activity start

这是我的AutoComompleteTextView

<AutoCompleteTextView
            android:id="@+id/auto_serviceArea"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp"
            android:layout_weight=".5"
            android:background="@android:color/transparent"
            android:cursorVisible="false"
            android:hint="@string/serviceArea"
            android:padding="5dp"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:singleLine="true"/>

编辑1:我试图检查哪个视图正在获得焦点,因此我可以移动焦点,并且在调试时我从AutoCompleteTextView中移除了焦点但仍然键盘出现并在活动开始时消失。 所以这不是自动完成焦点问题。

4 个答案:

答案 0 :(得分:1)

如果您根据问题的链接尝试了所有可接受的问题,那么为什么不尝试调试您的启动活动,我的意思是您已经打算开始相应的活动。 在调试我的一个应用程序时,我发现android软键盘即使在完成调用它的活动后仍然没有下降的问题,它在屏幕上停留几秒钟,但这不会经常发生。

所以我建议你调试你的调用活动,只是尝试将“focusable = false”放在你调用相应活动的组件上。

答案 1 :(得分:0)

您需要做的就是提供

android:windowSoftInputMode="stateHidden"

在您的活动的清单文件中。

答案 2 :(得分:0)

在主xml标记内写下以下行

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

如下所示

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true" >

答案 3 :(得分:0)

java档案中使用这些行:

InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);