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

问题描述:

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

我有一个活动(说),关于这一点我已经设置

android:configChanges="keyboardHidden" 

,因为我不想让键盘上的这个活动,但是当我从这个活动转移到另一个活动(比如B)包含Map和AutoComompleteTextView,键盘会自动弹出并关闭。

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

+2

发布您的edittext XML布局。 – Noorul

+0

XML加入@ahamed –

+0

@RajatPorwal尝试'机器人:可调焦= “假”'和'机器人:focusableInTouchMode = “真”'在autocompleteTextView –

只要你需要做的就是给

android:windowSoftInputMode="stateHidden" 

在你的活动清单文件。

+0

试过不工作我甚至试过 “stateAlwaysHidden”,但不起作用 –

+0

删除键盘的所有其他代码,然后放入此清单代码。它为我工作很好。我总是使用这种方法隐藏Activity创建的键盘。 –

+0

我发现这个环节相当有帮助,我希望它可以帮助你太https://www.youtube.com/watch?v=KxdEKTt0-1k – Zidane

下面一行写你的主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" > 
+0

尝试不工作! –

java文件中使用这些行:

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

已经尝试过,请阅读完整的问题。 –

如果你已经尝试了一切自带作为一个被接受的答案根据你的问题的链接,那么你为什么不尝试deb ugging你的开始活动,我的意思是你有意开始各自的活动。 在调试我的一个应用程序时,我发现android软键盘即使在完成调用它的活动后也不会停机,但它会在屏幕上停留几秒钟,但这种情况不会频繁发生。

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

+0

但我已将android:configChanges =“keyboardHidden”放入我的调用活动中,这意味着我已更改该活动的键盘辅助功能,因此键盘将永远不会出现在该屏幕上,如果错误,请纠正我。 –

+0

但我确定我会尝试你的建议,因为我没有任何其他选择,我已经尝试了当前活动中的所有内容。 –

+0

我试着调试调用活动,并按照你的建议把focusable = false放在我称之为新活动的组件上,而它的工作原理是 ..!这意味着问题在于调用活动,键盘出现在调用活动上。我不知道为什么会这样,因为我已经把机器人:configChanges =“keyboardHidden” 和android:windowSoftInputMode =“adjustPan | stateAlwaysHidden | stateUnchanged”在menifest.xml仍然出现在该活动是键盘。 你能解释为什么发生这种情况? –