2012-09-07 61 views
8

私のアプリが見えるときに画面を消すたびにInputConnectionWrapperの警告が表示されます。なぜ私はInputConnectionを使わないので、わからない。InputConnectionWrapper警告

ここにLogCat出力があります。

09-07 14:21:31.716: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 
09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:32.013: W/IInputConnectionWrapper(24197): showStatusIcon on inactive InputConnection 
09-07 14:21:32.013: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 
09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 
09-07 14:21:32.028: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 
09-07 14:21:32.028: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 
09-07 14:21:32.028: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 
+1

私はまだこの警告を受け、任意の広告LIBSを持っていけません! – IronBlossom

+5

Androidキーボードと異なるキーボードを使用していますか?私はSwiftKeyを使うときも同じことが分かりますが、Androindのものを使うときはほんの少しの警告があります。 – fr4gus

+0

まったく同じ問題がここにあります。 SwiftKeyでのエラー、Swypeでのエラー。あなたはその問題を解決しましたか? –

答えて

-3

上記のInputConnectionWrapperの使用は完全に正しいことが判明しました。しかし、commitText()は、(特殊な場合を除いて)決して呼び出されません。他の方法があります。これは入力中に使用されます。これらは主にsetComposingText()sendKeyEvent()です。

しかし、同様の問題が発生したため、すべてのユーザーの入力を確実に捕捉するために、deleteSurroundingText()またはcommitText()のような使用頻度の低いメソッドをオーバーライドすることも重要です。

私の状況:EditTextのユーザータイプが表示されています。 EditTextは、ユーザーがボタンを押すと消去されます。急速にボタンを押すと多くの非アクティブなInputConnectionエントリが流出します。

など。 editText.setText(null);

私の上記logcatの最後の行は、何が起こっているかの大きな指標となります。確かに、InputConnectionは、テキストを消去する要求に圧倒されています。私はそれをクリアしようとする前に、テキストの長さをチェックするようにコードを修正してみました:

if (editText.length() > 0) { 
    editText.setText(null); 
} 

これはつまり、もはや急速にボタンを押すに問題がIInputConnectionWrapper警告の流れを引き起こし軽減します。しかし、ユーザーが何かを入力したり、ボタンを押したり、アプリケーションが十分な負荷がかかっているときにボタンを押すと、ユーザーはすぐに問題を起こしやすくなります。Editable.clear()をクリアする別の方法が見つかりました。これで、私はすべての警告を得ることはありません:あなたはすべての入力状態だけでなく、テキストをクリアしたいはずです

if (editText.length() > 0) { 
    editText.getText().clear(); 
} 

注意(定型句、autocap、マルチタップ、元に戻す)、あなたはTextKeyListener.clear(Editable e)を使用することができます。

if (editText.length() > 0) { 
    TextKeyListener.clear(editText.getText()); 
} 

入力接続ラッパーの詳細については、以下のリンクを参照してください。

http://developer.android.com/reference/android/view/inputmethod/InputConnection.html

+10

ジョンソンウォンの答えはほぼそのままコピーされているようです。http://stackoverflow.com/questions/8122625/getextractedtext-on-inactive-inputconnection-warning-on-android –

0

助けるために、すでに手遅れの推測が、それは私の場合には、私はテキスト編集の「setOnEditorActionListener」を持っている問題である - 私はこのリスナーを削除した場合に警告がなくなっています。私は、この持っていたボタンレイアウトで私の場合は

0

:ちょうどそれと問題解決の除去、android:textIsSelectable="true"を...