【问题标题】:keyboard automatic pops up when moving from one activity to another从一个活动移动到另一个活动时,键盘会自动弹出
【发布时间】:2017-05-05 08:16:25
【问题描述】:

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

我有一个活动(比如 A)我已经设置了

  android:configChanges="keyboardHidden" 

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

我对活动 B 的尝试: 在清单中我已经设置了

android:windowSoftInputMode="stateHidden|adjustResize"

在创建时

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 的每个组件。

但没有什么对我有用。

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

OnScreen keyboard opens automatically when Activity starts

Automatic popping up keyboard on start Activity

How to avoid automatically appear android keyboard when activity start

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

<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 中删除了焦点,但键盘仍然出现并在活动开始时消失。 所以这不是自动完成焦点问题。

【问题讨论】:

  • 发布您的 edittext XML 布局。
  • xml 添加了@ahamed
  • @RajatPorwal 在 autocompleteTextView 中尝试 android:focusable="false"android:focusableInTouchMode="true"
  • @AkshayBhat'AB' 尝试不工作

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


【解决方案1】:

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

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

【讨论】:

  • 但我已将 android:configChanges="keyboardHidden" 放在我的调用活动中,这意味着我已经更改了该活动的键盘可访问性,因此键盘将永远不会出现在该屏幕上,如果我错了,请纠正我。 ?
  • 但是好的,我会尝试你的建议,因为我没有其他选择,我已经尝试了当前活动的所有内容。
  • 我尝试调试调用活动,并按照您的建议将 focusable=false 放在我从中调用新活动的组件上并且它起作用了..!!这意味着问题出在调用活动上,键盘出现在调用活动上。我不知道为什么会发生这种情况,因为我已经在menifest.xml 中放置了 android:configChanges="keyboardHidden" 和 android:windowSoftInputMode="adjustPan|stateUnchanged|stateAlwaysHidden" 键盘仍然出现在该活动中。你能解释一下为什么会这样吗?
【解决方案2】:

你需要做的就是给予

android:windowSoftInputMode="stateHidden"

在您的 Activity 的清单文件中。

【讨论】:

  • 试过不工作我什至试过“stateAlwaysHidden”但不工作
  • 删除键盘的所有其他代码,只放这个清单代码。它对我来说工作正常。我总是使用这种方法在 Activity 创建时隐藏键盘。
  • 我觉得这个链接很有帮助,希望对你也有帮助youtube.com/watch?v=KxdEKTt0-1k
  • @AshishVora 尝试了您的解决方案问题仍然存在,但现在键盘也无法触摸。
  • 当你点击Edittext时,键盘不来了?
【解决方案3】:

在你的主要 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" >

【讨论】:

    【解决方案4】:

    java 文件中使用这些行:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-15
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 2019-08-24
      • 2016-08-15
      • 1970-01-01
      相关资源
      最近更新 更多