0
私は、ツールバーのSearchViewを折りたたみアクションビューとして持っています。そして、私はそれが何かに焦点を失うたびに、それが崩壊したかったが、それが空の場合のみ。フォーカスを失ったときのSearchViewの折りたたみ(サポートライブラリ)
これは私が使用したコードだった:
svSearchView.setOnQueryTextFocusChangeListener((v, hasFocus) -> {
if (!hasFocus && svSearchView.getQuery().toString().isEmpty()) {
mSearchMenuItem.collapseActionView();
}
});
私は最近、サポートライブラリをアップグレードしているので、27.0.1になりましたです。私はまた古い統合されたActionBarの代わりに新しいToolbar
を使い始めました。 SearchViewで上ボタンを押すとクラッシュするという問題があります(左上の戻る矢印)。現実には2回(最初はコードで、2回目はUPボタンで)に崩壊しようとするのは明らかに問題です。
java.lang.NullPointerException: Attempt to write to field 'android.view.ViewParent android.view.View.mParent' on a null object reference
at android.view.ViewGroup.removeFromArray(ViewGroup.java:5035)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5232)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5194)
at android.view.ViewGroup.removeView(ViewGroup.java:5125)
at android.support.v7.widget.Toolbar$ExpandedActionViewMenuPresenter.collapseItemActionView(Toolbar.java:2401)
at android.support.v7.view.menu.MenuBuilder.collapseItemActionView(MenuBuilder.java:1370)
at android.support.v7.view.menu.MenuItemImpl.collapseActionView(MenuItemImpl.java:828)
at android.support.v7.widget.Toolbar.collapseActionView(Toolbar.java:716)
at android.support.v7.widget.Toolbar$3.onClick(Toolbar.java:1381)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
この場合、推奨される方法はありますか。
完全なアクティビティコードを投稿できますか?クラッシュはNullPointerExceptionに関連し、投稿したコードに基づいて、コードのその部分ではありません。 –
残念ながら、ここで完全なアクティビティコードを投稿することはできません。しかし、クラッシュは、すでに折りたたまれているときにもはや存在しないビューの親に関係しています。 –
単純な修正は、SearchViewの親がnullで、コールバックの内部に戻るかどうかをチェックすることです。正しい修正は、2回の発射を防ぐことです。 –