2013-03-12 13 views
5

私は電子メールで食料品のリストを共有するAndroidアプリを持っています。私は電子メールクライアント(交換クライアントまたはGmailクライアントかもしれない)によってリストを送った後、キーボードが閉じないという問題があります。電子メールクライアントから戻った後にキーボードが閉じない

私が試してみました:

InputMethodManager mgr = (InputMethodManager) getSystemService(
     Context.INPUT_METHOD_SERVICE); 
mgr.hideSoftInputFromWindow(editTxt.getWindowToken(), 0); 

や他の多くの方法を。キーボードが開いているかどうかを確認すると、それはキーボードを呼び出したアプリではなく電子メールクライアントであるので、falseを返します。私を含む回避策た

android:windowSoftInputMode="stateAlwaysHidden" 

を、その後アプリは、キーボードを閉じる強制されますが、私は再びキーボードを開くたびに遅れる継続します。

サムスンの電話では、Gmailクライアントを使用する場合にのみ問題が存在します。あなたはonResume()メソッドでこのコードをあなたのマニフェスト

答えて

2

解決策が見つかりました。数ミリ秒後、フォーカスはアプリケーション外(Email-client)からeditTextビューに変更されました。その後、キーボードを閉じることができます。 私のソリューションは次のようになります:

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 

      @Override 
      public void run() { 
       closeKeyboard(); 
      } 
     }, 20); 
+0

正確な時期を正確に知るための明確な方法はありません。ポーリングでさえ、そうですか?私の鼻をインプットメソッドのサービスメソッドとデータ構造のフィールドに貼り付けようとしましたが、現在のフォーカスに関連するものを見つけることができませんでした。 – Meymann

0

使用android:windowSoftInputMode="stateHidden"を入れますか?

+0

私はすでに持っています。 – lagos

+0

uは、この使用stateHiddenではなく、stateAlwaysHidden ...を使用していると述べました。似たようなケースのために私のために働く – stinepike

+0

申し訳ありませんが、私のせいで、意図から戻ったときにキーボードを閉じるのと同じように、stateAlwaysHiddenが言及されています。 – lagos

0

のactiviyタグで

+0

私は 'startActivityForResult()'を使ってインテントを起動します。そのため、 'onActivityResult'の中にコードがあります。しかし、私はそれをonResume()メソッドに入れようとします。 – lagos

+0

私はonResume()に入れようとしましたが、問題は、キーボードが開いていることを認識していないということです。キーボードはeditTxtにフォーカスしていないので、閉じることはできません。 私は 'InputMethodManager im =(InputMethodManager)this.getApplicationContext()。getSystemService(Context.INPUT_METHOD_SERVICE);を試みました。 \t \t im.hideSoftInputFromWindow(getCurrentFocus()。getWindowToken()、InputMethodManager.HIDE_IMPLICIT_ONLY); – lagos

+0

ブーリアンでトリックを行うことができます。このアクティビティにブール値を入れてみてください。あなたのアプリケーションの別のアクティビティから来たときには、このブール値をonCreate()メソッドに入れます。TRUE ...電子メールクライアントから来たときに、このブール値をインスタンス化しないでください(または= FALSE)。このブール値= FALSEのとき – StephaneT

関連する問題