在我的应用程序中,当我从一个活动转到另一个活动时,会自动弹出软键盘。
我有一个活动(说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中移除了焦点但仍然键盘出现并在活动开始时消失。 所以这不是自动完成焦点问题。
答案 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);