【发布时间】:2018-07-10 14:32:30
【问题描述】:
每次我导航到应用程序中的新片段时,都会显示软键盘。我目前在做什么:我有打开 Fragment B 的 Fragment A,我把它放在 Fragment A 中:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AndroidUtils.closeKeyboard(activity); //custom method I use to close the keyboard
}
在片段 B 中:
@Override
public void onStop() {
AndroidUtils.closeKeyboard(activity);
super.onStop();
}
我在这方面取得了最大的成功,但问题是键盘会在过渡期间打开,然后在片段 B 打开时关闭。我不希望键盘出现 - 这些片段都没有 EditTexts,所以我认为这不是焦点问题。这是我尝试过的:
-
把它放在 AndroidManifest.xml 中:
android:windowSoftInputMode="stateHidden"
-
将此添加到每个片段的 OnCreateView() 甚至 OnCreate():
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
这是一个非常奇怪的错误,有什么想法吗?
编辑:我的 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="App.App.AppName">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-sdk android:minSdkVersion="16" />
<application
android:name=".Global"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
<activity
android:name=".AppName.MainActivity"
android:configChanges="orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".firebase.DefaultFirebaseMessagingService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
</application>
【问题讨论】:
标签: java android android-softkeyboard