1

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

我有一项活动(比如 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 键盘在 Activity 启动时自动打开

启动 Activity 时自动弹出键盘

如何避免活动开始时自动出现android键盘

这是我的自动完成文本视图

<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

4 回答 4

1

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

因此,我建议您也调试您的调用活动,只需尝试将“focusable = false”放在您调用相应活动的组件上。

于 2016-12-20T10:13:32.657 回答
0

简单地说,你需要做的就是给予

android:windowSoftInputMode="stateHidden"

在您的活动清单文件中。

于 2016-12-20T07:43:52.977 回答
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" >
于 2016-12-20T08:47:21.247 回答
0

java在文件中使用这些行:

InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
于 2016-12-20T09:38:51.780 回答