いくつかのフォーカス可能なコンポーネントが内部にあるListViewがあります(ほとんどはEditText
s)。ええ、これが正確に推奨されているわけではないことは知っていますが、一般的に、ほとんどすべてが正常に機能しており、焦点は必要な場所に移動します(コーディングする必要があるいくつかの調整があります)。とにかく、私の問題は、指でリストをスクロールし、IMEキーボードが表示されているときに突然トラックボールを使用すると、奇妙な競合状態が発生することです。何かが範囲外に出てリサイクルされる必要があり、その時点でoffsetRectBetweenParentAndChild()
メソッドが開始してをスローする必要がありIllegalArgumentException
ます。
問題は、この例外が、try / catchを挿入できるブロックの外でスローされることです(私が知る限り)。したがって、この質問には2つの有効な解決策があります。
- 誰かがこの例外がスローされる理由とそれが起こらないようにする方法を知っています
- 誰かがtry/catchブロックをどこかに配置して、少なくとも私のアプリケーションを存続させる方法を知っています。私が知る限り、問題は焦点の問題であるため、アプリケーションを強制終了することは絶対にありません(これが実行していることです)。のメソッドをオーバーライドしようとしまし
ViewGroup
たが、これら2つのoffset*
メソッドはfinalとしてマークされています。
スタックトレース:
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): FATAL EXCEPTION: main
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): java.lang.IllegalArgumentException: parameter must be a descendant of this view
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:2633)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:2570)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewRoot.scrollToRectOrFocus(ViewRoot.java:1624)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewRoot.draw(ViewRoot.java:1357)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.os.Handler.dispatchMessage(Handler.java:99)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.os.Looper.loop(Looper.java:130)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at java.lang.reflect.Method.invokeNative(Native Method)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at java.lang.reflect.Method.invoke(Method.java:507)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): at dalvik.system.NativeStart.main(Native Method)