防止其他活动出现软键盘

时间:2013-03-23 09:51:30

标签: android android-tabactivity

我的第一个标签上有一个EditText。当然,当我触摸EditText时出现软键盘。但是当我访问第二个选项卡时,它意味着第二个选项卡活动,软键盘保持显示在我的第一个选项卡上,即使我的第二个选项卡活动中没有EditText,也不会消失。

我希望在访问第二个标签时阻止软键盘出现。

我该如何解决这个问题?

这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidaccountbook"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name="com.example.androidaccountbook.AccountTabActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden">
             <!--  screenOrientation prevent from rotation -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity android:name="com.example.androidaccountbook.accountMainThread"
             android:windowSoftInputMode="stateHidden" />

        <!-- activity for intent -->
        <activity android:name="com.example.androidaccountbook.TodayExpenseList"
            android:windowSoftInputMode="stateHidden" />        
        <activity android:name="com.example.androidaccountbook.settingThread" 
            android:windowSoftInputMode="stateHidden"/>
        <activity android:name="com.example.androidaccountbook.FailedConnectDatabase" 
            android:windowSoftInputMode="stateHidden"/>

    </application>

    <uses-permission android:name="android.permission.INTERNET"/>

</manifest>

3 个答案:

答案 0 :(得分:1)

我想到了如何使用它并且我尝试了它,它有效。

因为我想访问第二个活动,并且肯定会发生生命活动onPause方法。所以,我在onPause方法上写了下面的hideKeyboard方法。

这就是onPause方法的样子

@Override
protected void onPause(){
    super.onPause();

    hideKeyboard(this,editText);

}

这是我的hideKeyboard方法,如

public void hideKeyboard(Context context, EditText text){
        InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(text.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
    }

答案 1 :(得分:0)

最佳解决方案是:(在清单文件中)

<activity android:name=".MainActivity" 

    android:windowSoftInputMode="stateHidden" />

答案 2 :(得分:0)

我使用它并且它始终有效:

<activity
        android:name="MyProfileActivity"
        android:windowSoftInputMode="stateHidden|adjustPan" />