2013-03-23 4 views
1

У меня есть 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> 

ответ

1

I понял, как работать на нем, и я попробовал, он работает.

Потому что я хочу получить доступ ко второму действию, и, безусловно, будет происходить процесс жизнеобеспечения onPause. Итак, я написал следующий метод hideKeyboard для моего метода onPause.

Это как метод 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); 
    } 
0

Лучшим решением было бы: (в файле манифеста)

<activity android:name=".MainActivity" 

    android:windowSoftInputMode="stateHidden" /> 
+1

К сожалению, это не работает. Можете ли вы помочь взглянуть на мой манифест? – edisonthk

+0

Отправьте его здесь, чтобы мы могли его осмотреть. – Skynet

+0

Это может помочь вам http://stackoverflow.com/questions/10611833/how-to-disable-keypad-popup-when-on-edittext/13908440#13908440 – Skynet

0

Я использую это и он всегда работает:

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