【问题标题】:Prevent softkeyboard appear from other activity防止软键盘出现在另一个活动中
【发布时间】:2013-03-23 20:34:33
【问题描述】:

我的第一个选项卡上有一个 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>

【问题讨论】:

    标签: android android-tabactivity


    【解决方案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);
        }
    

    【讨论】:

      【解决方案2】:

      最好的解决方案是:(在 Manifest 文件中)

      <activity android:name=".MainActivity" 
      
          android:windowSoftInputMode="stateHidden" />
      

      【讨论】:

      【解决方案3】:

      我用这个,它总是有效的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 2020-04-22
        • 2018-05-30
        • 1970-01-01
        • 1970-01-01
        • 2013-07-19
        相关资源
        最近更新 更多